所以妳的fprintf ("%d ")並不是說存儲在文本中的數據占了四個字節,而是以10打印出來,可能是1個字節,也可能是5個字節。您的fprintf("%s ")實際上是24+1字節。但是,結構中的組織數據需要對齊..temp2[25]占用28字節的內存。因為它是32位機器,所以數據通常以四個字節對齊...對於壹個字節也是如此...自己看看size of(結構石堅)的大小。....
fprintf(“% 4d”)
fprintf("%28s ")
使用格式輸出,保證10十進制數的字符串占4個字節,本次的字符串占28個字節。
這樣,文本的數據被組織得和結構壹樣大。..
調試時,查看已經讀出了多少字節...fread,妳可以把單位設置成1,這樣妳就可以看到自己已經讀出了多少字節。fread會幫妳做,當然妳看不到細節。...
# include & ltstdio.h & gt
# include & lttime.h & gt
# include & ltstring.h & gt
int main(int argc,char *argv[])
{
time _ t time 1;
結構石堅
{
int數;
char time 2[25];
};
FILE * fp = NULL
if ((fp=fopen("1.txt "," a+")= = NULL)
{
printf("打不開!");
return-1;
}
結構石堅石堅[200];
int I = 1;
int rc
while(I = = 1 & amp;& amprc & lt10000)//rc超過10000,程序又會出錯...只給出了四位。
{
rc=fread(石堅,sizeof(結構石堅),200,FP);
//fflush(FP);
石堅->;數量= RC+1;
//石堅-& gt;數字= I;
//I = RC;
時間(& amptime 1);
strcpy(石堅-& gt;時間2,ctime(& amp;time 1));
printf("%d %s\n ",石堅-& gt;號,石堅-& gt;time p2);
//fwrite(q-& gt;number,sizeof(q-& gt;數),1,FP);
//fflush(FP);
fprintf(fp," %4d ",石堅-& gt;號);fflush(FP);
fprintf(fp," %28s ",石堅-& gt;time p2);fflush(FP);
// fwrite(石堅-& gt;時間2,sizeof(石堅-& gt;timep2),1,FP);
倒帶(FP);
睡眠(3);
// fseek(fp,0,SEEK _ SET);
//(石堅-& gt;數)++;
}
fclose(FP);
返回0;
}