我正在嘗試列印修改后的并行陣列,這些陣列是從檔案中讀取的,我從鍵盤向它們添加了另一個元素,但是,當程式列印新陣列時出現問題,我得到 000000 作為每個新元素盡管所有陣列的大小都已增加并且我對其進行了測驗,但新位置已填充了正確的新元素。這是 2 個函式的代碼。添加元素的函式:
void createNewAccount(char names[MAXSIZE][MAXSIZE], int stdID[MAXSIZE], float phones[MAXSIZE], int registrationYear[MAXSIZE])
{
int tid, ty;
float tp;
char tn[10];
if(size == MAXSIZE){
printf("Max size has been reached\n");
}
printf("Please enter a student number\n");
scanf("%d", &tid);
for(int o=0; o<size; o ){
if(stdID[o]==tid){
printf("The student already exists\n");
}
}
size ;
stdID[size]=tid;
printf("Please enter a phone number\n");
scanf("%f", &tp);
phones[size]=tp;
printf("Please enter a registration year\n");
scanf("%d", &ty);
registrationYear[size]=ty;
printf("Please enter a name\n");
scanf("%s", tn);
strcpy(names[size], tn);
}
and the function that prints is:
void viewList(char names[MAXSIZE][MAXSIZE], int stdID[MAXSIZE], float phones[MAXSIZE], int registrationYear[MAXSIZE])
{
for(int j=0; j < size; j ){
printf("%s %0.2f %d %d\n", names[j], phones[j], stdID[j], registrationYear[j]);
}
}
這個問題現在已經解決了,問題是tommy 0.00 0 0檔案中的資料是:
alex 599659008.00 19701112 2010
mark 599232832.00 19702315 2015
tommy 59965680.00 197012415 2020
我得到的結果是:
alex 599659008.00 19701112 2010
mark 599232832.00 19702315 2015
tommy 59965680.00 197012415 2020
tommy 0.00 0 0
uj5u.com熱心網友回復:
我懷疑問題是你做你的 size 太早了。如果 size 從您當前擁有的條目數開始,則您正在寫入您打算在 createNewAccount() 中寫入的元素之后的元素。將 size 移到該函式的底部,事情應該可以作業。
uj5u.com熱心網友回復:
我所要做的就是將 tn 的大小從 10 增加到 50。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406074.html
標籤:
上一篇:現代Linux是否需要-D_LARGEFILE_SOURCE
下一篇:動態記憶體分配和多執行緒
