一次从文件输出一行

jet*_*jet 1 c++ file-io

我正在尝试一次一行地输出文件中的文本.我目前正在硬编码,到目前为止我有这个:

int main(int argc, char *argv[])
{
    int x;
    int k;
    int limit = 5;
    FILE *file;

    file = fopen("C:\\Documents and Settings\\jon\\My Documents\\Visual Studio 2008\\Projects\\Project1\\Assignment8_2\\Debug\\TestFile1.txt", "r");
    if (file == NULL) {
        perror("Error");
    }

    for (k = 1; k <= limit; k++) {
        while ((x = fgetc(file)) != '\n') {
            printf("%c", x);
        }
    }
    fclose(file);
}
Run Code Online (Sandbox Code Playgroud)

我想知道上面的代码在哪里,如果有的话,我可以检查EOF.我想我需要这样做,但不知道为什么.还在学习....谢谢!

Ale*_*lli 5

如果你可以限制一行的最大长度,fgets可能是一个更好的方式来读取每一行; 但是既然你提到了C++,你可能会考虑使用getline(警告:fgets也会把\n它填入缓冲区,getline不会).两者都很容易检查文件的结尾(fgets在eof上返回NULL,getline在其istream参数上设置eofbit,它也返回).