如下定義:struct apparatus_info{ //定義儀器裝置資訊結構體char number[10]; //裝置編號char name[20]; //裝置名稱double price; //裝置單價char inDate[20]; //購進的時間char producter[20]; //生產廠家int count; //購進的數量char usability[INITIAL_SIZE]; //裝置的可用性};問題有好幾處,也有幾種方法解決1,分配給records[numApps]的記憶體空間雖然是給它使用但是它沒有初始化,裡面是有一堆亂七八糟的資料之後你儲存到records[numApps]裡的資料如果沒有用完numApps空間尾巴還是有一堆亂七八糟的資料所以不乾淨如果records[numApps]是字串搬進去住前先把房間打掃一下,用memset(records,0,numApps);就是讓它的儲存空間全部寫0但是你的records[numApps]是結構體陣列所以需要另外保證每組資料的每個成員都有寫值2,你用的是gets(str);輸入的是字串,回車結束str是10,而records得成員有10,20,這就有隱患3,atof和atoi函式使用的時候要小心對於atoi和atof,有新的函式可以替代atoi可以用strtol替代,而atof可以用strtod等替代strtol比atoi安全,records[numApps].price=(float)atof(str);改成records[numApps].price=(double)atof(str);4,輸入records[numApps]成員資料的時候不如用scanf("%d%f%s",&......);格式化輸入安全5,fp=fopen("app_info.txt","w");是以文字方式寫入檔案的fwrite(&records[i],sizeof(AppInfo),1,fp);驗證app_info.txt是文字還是二進位制fwrite的第一個引數是字串,是文字fwrite的第一個引數是int或float,是二進位制你的引數是結構體,資料型別複雜,app_info.txt是二進位制具體情況要具體分析還有fwrite輸出結構體陣列資料,一句話多痛快但是你要閱讀,或者用程式讀出來的時候你會感覺登山一樣難所以用fprintf格式化輸出安全 for(i=0;i
如下定義:struct apparatus_info{ //定義儀器裝置資訊結構體char number[10]; //裝置編號char name[20]; //裝置名稱double price; //裝置單價char inDate[20]; //購進的時間char producter[20]; //生產廠家int count; //購進的數量char usability[INITIAL_SIZE]; //裝置的可用性};問題有好幾處,也有幾種方法解決1,分配給records[numApps]的記憶體空間雖然是給它使用但是它沒有初始化,裡面是有一堆亂七八糟的資料之後你儲存到records[numApps]裡的資料如果沒有用完numApps空間尾巴還是有一堆亂七八糟的資料所以不乾淨如果records[numApps]是字串搬進去住前先把房間打掃一下,用memset(records,0,numApps);就是讓它的儲存空間全部寫0但是你的records[numApps]是結構體陣列所以需要另外保證每組資料的每個成員都有寫值2,你用的是gets(str);輸入的是字串,回車結束str是10,而records得成員有10,20,這就有隱患3,atof和atoi函式使用的時候要小心對於atoi和atof,有新的函式可以替代atoi可以用strtol替代,而atof可以用strtod等替代strtol比atoi安全,records[numApps].price=(float)atof(str);改成records[numApps].price=(double)atof(str);4,輸入records[numApps]成員資料的時候不如用scanf("%d%f%s",&......);格式化輸入安全5,fp=fopen("app_info.txt","w");是以文字方式寫入檔案的fwrite(&records[i],sizeof(AppInfo),1,fp);驗證app_info.txt是文字還是二進位制fwrite的第一個引數是字串,是文字fwrite的第一個引數是int或float,是二進位制你的引數是結構體,資料型別複雜,app_info.txt是二進位制具體情況要具體分析還有fwrite輸出結構體陣列資料,一句話多痛快但是你要閱讀,或者用程式讀出來的時候你會感覺登山一樣難所以用fprintf格式化輸出安全 for(i=0;i