2016-12-05 49 views
1

我試圖運行一個簡單的程序Codeblocks 16.11。我被卡住試圖讀取從下面的代碼文件的字符...C fread char代碼塊

FILE *fo; 
FILE *ft; 
char c; 

if ((fo = fopen("mayus.txt", "r")) == NULL){ 
     perror("opening mayus"); 
    } 

int m; 
m= fread(c, 1, 1, fo); 
printf("I just read for the first time with result m = %d\n",m); 

我的文件mayus.txt它只是一個txt以「ABCDEFGHIJK」裏寫道。我期待看到一個m = 1的printf,但我一直在控制檯中取得m = 0。

+2

注意'PERROR()'報告錯誤,但不返回。如果打開文件時出錯,您的代碼將繼續使用未打開的文件句柄。這對你的程序的健康沒有好處。 –

回答

3

首先檢查fread原型:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

m= fread(c, 1, 1, fo);是錯誤的

你需要的是

m = fread(&c, 1, 1, fo); // the first param should be a pointer to the buffer 
+0

你是完全正確的。這樣一個簡單的錯誤。非常感謝你」 – Asdemuertes