2016-07-15 57 views
2

。我想读一段cpp的文件以简单的impl读取所有cpp文件的行与Fgets

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 

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

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

什么是错的我的代码?

我的想法是搜索代码专线,后来就

+0

这是什么:'的fputs( “FOPEN榜样”,PFILE);'?你为什么要写入一个只读的文件? – GMichael

+0

哦,我认为r +使其可读可写? – Pepelee

+0

是的,你是对的。 'r +'既是阅读又是写作。不过,它是一个文件,你不应该写入你将要读取的文件。 – GMichael

回答

4

编辑当文件打开时进行更新,并希望写你需要调用fflush 1后读。所以称它为你写到这里后的文件:

fputs ("fopen example", pFile); 

(从ISO报价/ IEC 9899:201X 7.21.5.3函数fopen 7)
然而,输出不得直接接着输入而没有居间 调用fflush函数或文件定位函数(fseek, fsetpos,或倒带)

的输出被写入到该文件中,并输入为r读取文件。

+1

快退(pFile);做这项工作。感谢您的信息@ 2501 – Pepelee

-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); 
} 
+0

我的想法是搜索一个特殊的代码行,稍后编辑它 – Pepelee

+0

并将输出写入相同的文件? – inzanez