C fread char代码块
问题描述:
我试图运行一个简单的程序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。
答
首先检查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
注意'PERROR()'报告错误,但不返回。如果打开文件时出错,您的代码将继续使用未打开的文件句柄。这对你的程序的健康没有好处。 –