我正在尝试使用以下代码读取一行:

while(fscanf(f, "%[^\n\r]s", cLine) != EOF )
{
    /* do something with cLine */
}

但不知怎么的,我每次都只能得到第一行这是读一行字的坏方法吗我该怎么做才能让它按预期工作?

最佳答案

使用fscanf()函数几乎总是一个坏主意,因为它会在失败时将文件指针留在未知位置。
我更喜欢使用fgets()来获取每一行,然后使用sscanf()来获取然后,您可以根据需要继续检查读取的行类似于:

#define LINESZ 1024
char buff[LINESZ];
FILE *fin = fopen ("infile.txt", "r");
if (fin != NULL) {
    while (fgets (buff, LINESZ, fin)) {
        /* Process buff here. */
    }
    fclose (fin);
}

fgets()似乎是您要做的,在遇到换行符之前一直在读取字符串。

关于c - 使用fscanf()读取行时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44848066/

10-11 22:27
查看更多