2013-05-13 146 views
0

我有與作業有關的文件問題。如何在處理文件時跳過數據C語言

這裏是分配:

我被要求寫代碼,增加了各行的文本文件,該行數的程序。例如,如果原文件爲:

Hi my name is Oria 
I study programming 
I love dogs 
I use stackoverflow 

將改爲:

1 Hi my name is Oria 
2 I study programming 
3 I love dogs 
4 I use stackoverflow 

但我不知道如何跳過一條線。在寫完第一個數字之後,如何提前將*文件指針作爲下一行的第一個字符?

+0

強迫人們在純C中使用文本來學習它是否有意義? – maverik 2013-05-13 17:11:32

+0

@maverik:當然,爲什麼不呢? – 2013-05-13 19:25:49

+0

當您讀取文件時,您當前在文件中的位置會自動前進。 – 2013-05-13 19:26:57

回答

1

使用getline(3)讀取循環中的行。在循環中,您可以隨意跳過行。

while (1) { 
    .... 
    getline(); 

    if (...) 
     continue; 

} 
+3

而不是'fgets()'。 – 2013-05-13 17:15:52

+0

@ H2CO3:有POSIX定義的getline函數(但不是由ISO C定義);它通過使用'malloc'或等價物分配行來避免'fgets'具有長行的問題。 (也可能有其他不兼容的函數具有相同的名稱。)使用'fgets()'的代碼更加便攜。 – 2013-05-13 19:24:37

2

這可以在寫入另一個文件的幫助下完成。

使用fgets讀取輸入文件的每一行並開始循環計數,然後用計數和數據寫入輸出文件。

#include <stdio.h> 
int main() 
{ 
FILE *src, *dest; 
char buf[64]; 
int i = 0; 
src = fopen("in.txt", "r"); 
dest = fopen("out.txt", "w"); 
while(fgets(buf, 64, src) != NULL){ 
    i++; 
    fprintf(dest, "%d %s", i,buf); 
} 
fclose(src); 
fclose(dest); 
return 0; 
}