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

使用FGET读取cpp文件的所有行,c,fgets,C,Fgets,在我的简单解释中。我想读取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;

在我的简单解释中。我想读取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);
    }
my text.cpp包含以下内容:

Testline1
Testline2
Testline3
Testline4
作为输出,我得到无法读取的字符:

ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
我的代码有什么问题


我的想法是搜索一行特殊的代码,然后在文件打开进行更新时对其进行编辑,如果您想在写入后读取2,则需要调用fflush1。因此,在写入文件后,请在此处调用它:

fputs ("fopen example", pFile);

1(引用自ISO/IEC 9899:201x 7.21.5.3 fopen功能7)
但是,输出后不得直接跟随输入,无需 对fflush函数或文件定位函数(fseek, fsetpos,或倒带)


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);
}
#包括
#定义最大行1024
int main(int argc,char*argv[])
{
文件*pFile;
char buf[MAX_LINE];
fopen_s(和pFile,“测试cpp”、“r”);
if(pFile==NULL)
{
printf(“无法打开文件进行读取。\n”);
返回1;
}
而(fgets(buf、MAX_线、pFile))
{
printf(“%s”,buf);
}
fclose(pFile);
}

它是什么:
fputs(“fopen示例”,pFile)?你为什么要写一个只为读而打开的文件?哦,我认为r+使它可读写?是的,你是对的
r+
既可以读也可以写。不过,它是一个文件,你不应该把它写入你要读的文件中。正如我所记得的,对于文本文件,你不能通过阅读直接跟随写作。例如,需要在两者之间进行搜索。同时检查mode.FWIW,“r+”打开一个现有文件进行读写,“w+”打开一个空文件进行读写。任何现有内容都将被销毁。倒带(pFile);他做这项工作。感谢@2501M提供的信息。我的想法是搜索一行特殊的代码,稍后再编辑,并将输出写入同一个文件?