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

时间:2010-11-16 00:29:41

标签: c file delimiter

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。

1 个答案:

答案 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()允许您指定不同的行尾分隔符。