gpt4 book ai didi

C 文件按行读取到自定义分隔符

转载 作者:行者123 更新时间:2023-11-30 16:03:22 24 4
gpt4 key购买 nike

C 中是否有函数可以读取带有自定义分隔符(如“\n”)的文件?

例如:我有:

我确实在文件中写了\n来举例说明是LF(换行符,'\n',0x0A)

this is the firstline\n this is the second line\n

我希望文件按部分读取并将其分成两个字符串:

this is the firstline\n
this is the second line\n

我知道 fgets 我可以读取最多多个字符,但不能按任何模式读取。在 C++ 中我知道有一个方法,但在 C 中该怎么做?

我将展示另一个例子:

我正在读取文件 ABC.txt

abc\n
def\n
ghi\n

使用以下代码:

FILE* fp = fopen("ABC.txt", "rt");
const int lineSz = 300;
char line[lineSz];
char* res = fgets(line, lineSz, fp); // the res is filled with abc\ndef\nghi\n
fclose(fp);

我预计 fgets 必须在 abc 上停止\n

但资源中填充的是:abc\ndef\nghi\n

SOLVED: The problem is that I was using Notepad++ in WindowsXP (the one I used I don't know it happens on other windows) saved the file with different encoding.

The newline on fgets needs the CRLF not just the CR when you type enter in notepad++

I opened the windows notepad And it worked the fgets reads the string up to abc\n on the second example.

最佳答案

fgets() 将一次读取一行,并且在行输出缓冲区中包含换行符。这是常见用法的示例。

#include <stdio.h>
#include <string.h>
int main()
{
char buf[1024];
while ( fgets(buf,1024,stdin) )
printf("read a line %lu characters long:\n %s", strlen(buf), buf);
return 0;
}

但是既然您询问了使用“自定义”分隔符... getdelim() 允许您指定不同的行尾分隔符。

关于C 文件按行读取到自定义分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com