2016-07-15 60 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

相關問題