C fread字符码块

C fread字符码块,c,char,codeblocks,fread,C,Char,Codeblocks,Fread,我试着用代码块16.11运行一个简单的程序。在下面的代码中,我无法从文件中读取字符 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);

我试着用代码块16.11运行一个简单的程序。在下面的代码中,我无法从文件中读取字符

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只是一个里面写着“AbCDEFGHIjK”的文本。我希望看到m=1的printf,但我在控制台中一直得到m=0

首先检查
fread
原型:

size\u t fread(void*ptr、size\u 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

你完全正确。这么简单的错误。非常感谢“请注意,
peror()
报告了一个错误,但确实会返回。如果打开文件时出错,代码将继续使用未打开的文件句柄。这对程序的运行状况不利。