我试着用代码块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”的txt。我希望看到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

关于c - C fread char代码块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40966495/

10-12 07:11