用于作业。做好旧的银行应用程序。我正在尝试使用malloc和realloc创建一个动态数组,因此它为我创建的每个帐户提供了1个更多的空间。它只是一个测试,所以根本不完整。 当我运行它时,它会要求我输入我的名字,姓氏和年龄,然后在第二遍时,它会跳过名字而直接转到第二个名字。由于重新分配无法正常工作。我什至注释掉了realloc语句,结果是一样的。我以为也许是因为我没有输入char数组中允许的全部15个字符,所以编译器看到了一些内存,数字不足以容纳2 x 15元素数组,而是一个年龄加上一个3元素数组。与int scanf相同的结果(注释掉)。但这并不能解释为什么如果realloc没有创建一个索引,我为什么可以索引1。不能进行调试,GDB总是说Dwarf Error:eclipse编译单元标头中的版本错误(为4,应为2)。
struct account{
char firstName[15];
char lastName[15];
char age[3];
};
void assign(struct account* test,int count){
printf("enter first name \n");
fgets(test->firstName,15,stdin);
printf("enter lastName\n");
fgets(test->lastName,stdin);
printf("enter age\n");
//scanf("%d",&test->age);
fgets(test->age,3,stdin);
}
int main(void){
struct account * test = (struct account*)malloc(sizeof(struct account));
int count = 0;
assign(&test[count],count);
count++;
test = realloc(test,(sizeof(struct account) + count + 2));
assign(&test[count],count);
count++;
printf("%s\n",test[0].firstName);
printf("%s\n",test[0].lastName);
printf("%s\n",test[0].age);
printf("%s\n",test[1].firstName);
printf("%s\n",test[1].lastName);
printf("%s\n",test[1].age);
while(1);
return 0;
}
我在较早的草案中曾发布过类似的问题,但事实证明不是参数问题