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
上但是res充满了:abc \ ndef \ nghi \ n
已解决:问题是我在WindowsXP中使用Notepad ++(我使用的那个) 我不知道它发生在其他窗口上)保存文件与不同 编码
fgets的换行符需要CRLF,而不仅仅是键入时的CR 输入notepad ++
我打开了Windows记事本并且它工作了fgets读取字符串 在第二个例子中直到abc \ n。
答案 0 :(得分:1)
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()
允许您指定不同的行尾分隔符。