gpt4 book ai didi

c - 如何在 C 中使用结构体和指针的指针中的索引

转载 作者:行者123 更新时间:2023-11-30 17:15:42 25 4
gpt4 key购买 nike

我需要制作一个可以注册某些汽车的程序。然后我需要显示所有汽车登记册。

我无法完成这项工作,当我执行 printf 下面的代码时,只显示内存垃圾,而最后一辆车却显示正确!

代码(我有一个调用其他函数的菜单函数):

int id = 0;

struct car {

char brand[50];
char model[50];

};
car *garage = 0;
int doCar(){

garage = (struct car *)malloc(sizeof(struct car*));
printf("\n Insert the model: \n\n");
fflush(stdin);
fgets( garage[id].model, 50, stdin);
id++;

}

int ShowCars(){

int i = 0;

while (i < id) {

printf("aqi= %s \n", garage[id].model);
i++;

}

}

最佳答案

考虑以下示例:

#include <stdio.h>
#include <stdlib.h>

struct car {

char brand[50];
char model[50];

};

// dlobal variables
car* garage = NULL;
int cnt = 0;

void doCar(){
// add counter
cnt++;
// add memory
garage = realloc(garage, sizeof(car) * cnt); // NOTE: not malloc
printf("Enter the brand: ");
scanf("%49s", garage[cnt - 1].brand); // or fgets
printf("Enter the model: ");
scanf("%49s", garage[cnt - 1].model); // or fgets
}

void ShowCars(){
int i;
for(i = 0; i < cnt; i++)
{
printf("%s %s\n", garage[i].brand, garage[i].model);
}
}

编辑:

添加main函数进行测试:

int main(int argc, char* argv[])
{
// test for three cars
doCar();
doCar();
doCar();
ShowCars();

// free memory after using
free(garage);
return 0;
}

关于c - 如何在 C 中使用结构体和指针的指针中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com