我知道fread并不意味着与非二进制文件一起使用。然而,我想知道:如果我提供了正确的输入大小的函数,为什么不应该返回正确的值,而是它会返回垃圾?为什么fread会从非二进制文件中读取垃圾?
FILE *fp;
int val = 0;
if(fp = fopen("test.txt", "r")){
fread(&val, sizeof(int), 1, fp);
printf("val read %d \n", val);
fclose(fp);
}
if(fp = fopen("test.txt", "r")){
fscanf(fp, "%d", &val);
printf("val read %d \n", val);
fclose(fp);
}
作为一个例子,如果我读只有1234567内的文件时,输出是
val read 875770417
val read 1234567
垃圾是什么意思?文件的内容是什么?输出是哪个? – Lopan
你正在阅读什么文件,你得到了什么样的垃圾?请在问题中加入最相关的部分_(不包含在评论中)。 – ForceBru
对不起,我提出了错误的问题。我的意思是fread而不是fscanf。我也加了一个例子。 – barry91