使用Fgets读取cpp文件的所有行

时间:2016-07-15 09:18:57

标签: c fgets

在我简单的impl中。我想读取cpp文件的所有行

FILE * pFile;
    fopen_s(&pFile,"test.cpp","r+");
    if (pFile!=NULL)
    {
        fputs ("fopen example", pFile);
        char str [200];
        while (1) {
            if (fgets(str, 200, pFile) == NULL) break;
            puts(str);
        }   
        fclose (pFile);
    }

我的text.cpp包含:

Testline1
Testline2
Testline3
Testline4

作为输出我得到不可读的字符:

ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

我的代码出了什么问题?

我的想法是搜索一行特殊代码,然后在

上进行编辑

2 个答案:

答案 0 :(得分:4)

当文件打开以进行更新时,如果您想在写完后阅读 2 ,则需要调用fflush 1 。所以在这里写入文件后调用它:

fputs ("fopen example", pFile);

1 (引自ISO / IEC 9899:201x 7.21.5.3 fopen功能7)
但是,如果没有输入,输出不应直接输入 干预调用fflush函数或文件定位函数(fseek, fsetpos,或倒带)

2 输出正在写入文件,输入正在读取文件。

答案 1 :(得分:-2)

此代码应该实现您的目标:

#include <stdio.h>

#define MAX_LINE 1024

int main(int argc, char *argv[])
{
    FILE *pFile;
    char buf[MAX_LINE];

    fopen_s(&pFile, "test.cpp", "r");

    if (pFile == NULL)
    {
        printf("Could not open file for reading.\n");
        return 1;
    }

    while (fgets(buf, MAX_LINE, pFile))
    {
        printf("%s", buf);
    }

    fclose(pFile);
}