2017-07-28 82 views
-1

我需要將行號添加到existitng文件的每一行。 我的想法是讀取file1爲每行添加行號,將其存儲在一個單獨的變量中並寫入file2如何將行號添加到現有文件的行

這是我的代碼。

閱讀:

static char buff[100]; 
int lineNum = 0; 
FILE *fp = fopen ("file1", "r"); 

    while (fgets (buff, sizeof (buff), fp) != NULL) { 
    printf ("%7d: %s %s ", ++lineNum, buff); 
    } 
fclose (fp); 

節省:

我需要存儲在上面 「STR」 的結果,因此它可以被寫入文件2

FILE *fp2 = fopen ("file2", "w"); 
fwrite(str , 1 , sizeof(str) , fp2); 
fclose(fp2); 
+2

1.'printf(「%7d:%s%s」,++ lineNum,buff);'三個參數,兩個參數。 2.'fwrite(str,1,sizeof(str),fp2);'我們應該猜測什麼是str? 3.沒有錯誤檢查任何'fopen()' – John3136

+0

你可以'fprintf'像'fprintf(fp2,「%7d:%s」,++ lineNum,buff);' – BLUEPIXY

+0

你是否要求「存儲結果」從內存中的整個file1中,然後寫fo file2?爲什麼不只是同時打開fp和fp2,並且在從fp讀取數據後立即寫入一行(加上行號)到fp2?也就是說,而不是fgets()之後的printf(),只需使用fprintf()到已打開的fp2。然後在fgets()返回一個NULL後fclose()。幾乎完全是你已經在做的事情。 –

回答

0

請給出一個明確的情況下,從我能理解的任何東西中,您可以使用以下示例代碼作爲參考:

#include <stdio.h> 

#define MAX_LINE 1024 

int main() 
{ 
    FILE *inFile  = NULL, 
      *outFile = NULL; 

    char lCharBuff[MAX_LINE]; 

    int  lLineNum = 1; 

    inFile = fopen("main.c","r"); 
    outFile = fopen("out.txt","w"); 

    if(!inFile || !outFile) 
    { 
     printf("Unable to open file\n"); 
     return 0; 
    } 

    while(fgets(lCharBuff,MAX_LINE,inFile) != NULL) 
    { 
     fprintf(outFile,"%10d %s",lLineNum,lCharBuff); 
     lLineNum++; 
    } 

    fclose(inFile); 
    fclose(outFile); 

    return 0; 
} 
+1

請不要勺子人問誰不清楚的問題 - 添加一個評論,而不是要求'[mcve]'(擴展到[mcve]) –

+1

@AnttiHaapala感謝您的建議,將永遠銘記前進 –

相關問題