我知道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