2015-09-26 77 views
-5

我在論壇上發現了這個代碼,它工作正常,但我不知道它是如何工作的,爲什麼它工作。有人能告訴我關於此代碼的幾句話嗎?我想了解它並知道如何使用它。或者如果你知道更好的方法,如何將數據輸入到bin。來自txt文件的文件,你能給我一些建議嗎?C程序如何從txt文件加載數據?

#include <stdio.h> 
#define BLOCK_SIZE 256 

int main(void) 
{ 
    char buf[BLOCK_SIZE]; 
    size_t bytes; 

while(!feof(stdin)) { 
    bytes = fread(buf, 1, BLOCK_SIZE, stdin); 
    fwrite(buf, 1, bytes, stdout); 
} 
return 0; 
} 

非常感謝。

+1

你有沒有至少閱讀http://www.cplusplus.com/reference/cstdio/fread/和http://www.cplusplus.com/reference/cstdio/fwrite/? –

+3

有人寫了這個?告訴他們while(!feof(stdin))'是錯誤的http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong –

+0

爲什麼C++標記是C語言題? –

回答

0

意圖您的程序是從標準輸入複製到256個字符的塊的標準輸出。

fread函數將最多256個{BLOCK_SIZE}個字符讀入內存緩衝區。該函數返回讀取的實際數量。

fwrite函數會將緩衝區的內容寫入標準輸出。

通過放入一個循環重複該操作。

+0

但循環如何停止?當feof(stdin)= 0?如果是這樣,0取自哪裏?那是NULL字符還是類似的東西?這不是我無法找到或理解的。 – Tehryn

+0

@Tehryn你看過'feof'的文檔嗎?當它遇到「文件結尾」(EOF)時返回'1',在這種情況下,它是標準輸入流('stdin')的結尾。當流不在結尾時它返回'0',所以'!feof(stdin)'在流結束時結束「循環」。這是所有非常基本的C東西,我建議你閱讀它。 –

+1

@Tehryn:這就是爲什麼建議閱讀標準功能。 'feof'是一個函數,[返回記錄](http://en.cppreference.com/w/c/io/feof)。 – usr2564301