我正在學習fread和fwrite的c,並且使用fwrite在文件中編寫了一個結構的基本代碼。輸出在那裏fwrite中的輸出不如預期
#include<stdio.h>
int main()
{
FILE *f;
int i,q=0;
typedef struct {
int a;
char ab[10];
}b;
b var[2];
f=fopen("new.c","w");
printf("Enter values in structure\n");
for(i=0 ; i<2 ; i++)
{
scanf("%d",&var[i].a);
scanf("%s",var[i].ab);
}
fwrite(var,sizeof(var),1,f);
fclose(f);
return 0;
}
輸出不光滑,因爲它包含文件中的怪異字符。我也用二進制模式打開文件,但是徒勞無功。這是一種緩衝區問題嗎?
fwrite的參數可能需要調整。第三個參數有「1」,告訴它你只想輸出1個元素。對於第二個參數,你需要元素大小,它應該是字節。 (int和char是兩個不同大小的粗體,所以公分母是字節大小的輸出)。嘗試'fwrite(var,1,sizeof(var),f);' – ryyker
@ryykker,OP的代碼很好。 –
@CarlNorum - 同意了,我離開了,使用fprintf(正如你所建議的那樣),它工作正常。謝謝。我可以問一下你用什麼工具來獲得文件偏移,數據和關係列? – ryyker