我試圖使用動態內存將信息存儲在數據結構數組中。我已經設法使用我編寫的代碼存儲一組信息,但是,由於我的代碼只輸出最後一個用戶輸入,因此我無法確定如何存儲下一組輸入。將多個輸入存儲在C中的結構數組中
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
struct student {
int recordCount;
char *firstName;
};
int i;
char buffer[1000];
int main(){
struct student *sPtr= (struct student*) malloc(sizeof(struct student));
sPtr->recordCount = 1;
while (1){
sPtr=realloc(sPtr, sizeof(struct student)* sPtr->recordCount);
sPtr->recordCount++;
printf("First Name:\n");
fgets(buffer, 51, stdin);
if (strncmp(".\n", buffer, 51) == 0) break;
else{
sPtr->firstName=(char*)malloc(sizeof(char)*(strlen(buffer)));
strncpy(sPtr->firstName, buffer, strlen(buffer));
}
}
現在,如果我的printf(「%S」,sPtr->的firstName)我只輸出用戶,其意義的,我最後輸入。我的問題是如何將輸入存儲到結構數組中。我正在考慮將輸入變成像sPtr [counter] - > firstName這樣的輸入,但我似乎無法讓代碼正常工作。任何幫助,提示將不勝感激。
謝謝!
嘿謝謝你,我會試試看。所以我應該strcpy sptr-> firstName到新指針newStuPtr [x] - > firstName?如果我使用新的指針,printf將如何看起來像?例如'printf(「%s,%s」,newStuPtr [1] - > firstName,newStuPtr [2] - > firstName);'[x]是存儲每個數據的結構數組?這只是一個部分程序,所以我沒有免費提供,還有一些代碼組件。 – George
'newStuPtr'與'sPtr'類似,您可以通過從頭部'sPtr [i]'索引來訪問學生數組的第i個結構,或者使用'newStuPtr-> firstName'並將其轉發給(i + 1)th struct by'newStuPtr + = 1'。請注意,有一個更大的問題,你想在哪裏存儲學生的姓名。如果'student'結構是針對個別學生的,那麼就不需要在每個學生中存儲(不同的)'recordCount'。您可以使用C編程手冊來獲得設計和數據結構方面的幫助,然後您會發現代碼中的問題更少。 –