2011-12-01 16 views
1

我是C新手,所以我無法弄清楚如何做到這一點。我有這樣一個while循環:我怎樣才能重寫這個,而不是使用char數組?

char my_line[MAXLINE]; 
while(gets(my_line) != NULL) { 
    //process line 
} 

目前,這while循環從標準輸入接受輸入。有人可以告訴我如何使用char數組,即將數據從文件讀入char數組,然後將char數組傳遞給while循環嗎?

+5

永遠不要使用'gets'。決不。永遠不能。沒有辦法指定'gets'插入數據的緩衝區的大小,所以任何使用'gets'的程序都有一個嚴重的安全缺陷。 'fgets'是一個可用的選擇。 –

+0

@JamesMcNellis:這不是我的代碼,但我一定會牢記這一點。謝謝。 – Legend

回答

1

很容易。只需使用fgets。這並沒有解決動態內存分配問題,這個例子使用了一個固定大小的char數組。

FILE * pFile; 
    char mystring [100]; 

    pFile = fopen ("myfile.txt" , "r"); 
    if (pFile == NULL) 
    { 
     perror ("Error opening file"); 
    } 
    else 
    { 
     fgets (mystring , 100 , pFile); 
     fclose (pFile); 
    } 

    //mystring now contains the file with EOF terminator. 
+0

太棒了...非常感謝! – Legend

相關問題