-1
我有一個結構定義如下:如何SCANF到動態分配的結構INT
typedef struct {
char* name;
int* phone;
} person;
分配如下:
person* Person[numNames];
for (i =0; i<numNames; i++) {
Person[i] = malloc(sizeof(person));
Person[i]->name = malloc(25 * sizeof(char));
Person[i]->phone = malloc(sizeof(int));
memset(Person[i]->phone, 0, sizeof(int));
}
讀取輸入到手機這樣的:
for (i=0; i<numNames; i++) {
printf("%s: ", Person[i]->name);
scanf("%d", &Person[i]->phone);
}
這給了我一個分段錯誤:(也釋放人[我] - >手機給我分段錯誤)
for (i =0; i<numNames; i++) {
printf("%s: %d", Person[i]->name, *Person[i]->phone);
}
如何正確掃描到Person [i] - >手機沒有分段錯誤?
爲什麼要爲單個「int」分配內存?並且假設電話號碼包含非數字,比如''+''? –
刪除&在scanf中。它應該是scanf(「%d」,Person [i] - > phone); – MayurK
注意:電話號碼由單個數字和特殊符號組成。兩者都是單個字符,符號不是整數,數字可以相鄰。那麼使用int數組而不是簡單的'char'數組的原因是什麼? – Olaf