我试图使用动态内存将信息存储在数据结构数组中。我已经设法使用我编写的代码存储一组信息,但是,由于我的代码只输出最后一个用户输入,因此我无法确定如何存储下一组输入。将多个输入存储在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编程手册来获得设计和数据结构方面的帮助,然后您会发现代码中的问题更少。 –