2013-10-31 41 views
1

我正在做一個應該在兩個目錄路徑(一進一出)的源文件。然後將指定的文件從一個目錄複製到另一個目錄。我已經完成了代碼,除非我編譯它,它打印:如何在C中投射字符串?

warning: passing argument 3 of ‘fread’ makes integer from pointer without a cast [enabled by default]

這是我遇到問題的部分(我認爲):

if (fp_in != NULL && fp_out != NULL) 
{ 
    char line[BUFSIZ]; 

    while (fread(line, sizeof line, fp_in) != NULL) 
... 
+0

請顯示更多代碼:例如,您是如何聲明'fp_in'的? – elnigno

+0

您是否在尋找類似的東西:http://stackoverflow.com/questions/7021725/converting-string-to-integer-c? – LeeNeverGup

+1

你缺少一個參數,請檢查[fread]的文檔(http://www.manpagez.com/man/3/fread/) – A4L

回答

1

fread()需要4個參數和你只需要fgets()

檢查這兩個原型,如果要逐行讀取,你可以簡單地使用fgets()

while (fgets(line, sizeof line, fp_in) != NULL) 
     { 
     //.... 
     } 

fread(line, sizeof line, fp_in) 

fread

1

變化使用率

num_bytes = fread(line, sizeof(char), sizeof line, fp_in); 

其中num_bytessize_t類型來定義。保存從文件讀取的字節數(在這種情況下)。


閱讀fread()

雖然您在需要時參考文檔,但將其強制爲您將閱讀第一次使用的庫函數的文檔。

+0

我敢肯定,你需要在sizeof(char)'中使用圓括號。 – jwodder

+0

'fread()'不返回NULL。如果發生錯誤或到達文件末尾,則返回值是短項目計數(或零)。在你的答案中糾正。 – Gangadhar

+0

@jwodder:答案已更新以反映評論。 – smRaj