Arrays 通过函数修改结构数组的单个元素
我有一段代码,用来记录城市的名字和他们在一系列结构中的总的新冠病毒病例。内存分配必须动态完成,最初有3个空空间。用户输入3个城市后,将为下一次添加分配更多内存。但是,每当我添加一个城市和案例总数时,我都无法访问它们。我得到随机目录、字符或随机数。我认为我使用指针的方式有问题。我到底做错了什么Arrays 通过函数修改结构数组的单个元素,arrays,c,pointers,struct,Arrays,C,Pointers,Struct,我有一段代码,用来记录城市的名字和他们在一系列结构中的总的新冠病毒病例。内存分配必须动态完成,最初有3个空空间。用户输入3个城市后,将为下一次添加分配更多内存。但是,每当我添加一个城市和案例总数时,我都无法访问它们。我得到随机目录、字符或随机数。我认为我使用指针的方式有问题。我到底做错了什么 #include <stdio.h> #include <stdlib.h> #define MAX_CHAR 50 typedef st
#include <stdio.h>
#include <stdlib.h>
#define MAX_CHAR 50
typedef struct covid_cities{
char name[MAX_CHAR];
int cases;
int ID;
}COVID;
void addCity(COVID *cities, int number_of_cities){
if (number_of_cities<3){
cities[number_of_cities].ID=number_of_cities;
printf("Enter the name of the city: ");
scanf("%s", cities[number_of_cities].name);
printf("Enter the total covid cases: ");
scanf("%d", &cities[number_of_cities].cases);
printf("%s is added!\n", cities[number_of_cities].name);
}
else{
cities = (COVID *)realloc(cities, (number_of_cities+2)*sizeof(COVID));
cities[number_of_cities].ID=number_of_cities;
printf("Enter the name of the city: ");
scanf("%s", cities[number_of_cities].name);
printf("Enter the total covid cases: ");
scanf("%d", &cities[number_of_cities].cases);
printf("%s is added!\n", cities[number_of_cities].name);
}
}
int main(void){
int number_of_cities = 0;
while(1){
int user_input;
COVID *cities;
cities = (COVID *)malloc(sizeof(COVID)*3);
printf("Covid Cases By City\n");
printf("1) Add city\n");
printf("What would you like to do? ");
scanf("%d", &user_input);
switch(user_input){
case 1:
addCity(cities, number_of_cities);
number_of_cities++;
break;
default:
printf("Invalid Input\n");
}
}
}
#包括
#包括
#定义最大字符50
类型定义结构新冠城市{
字符名称[最大字符];
int案例;
int-ID;
}新冠病毒;
void addCity(新冠病毒*城市,城市的整数){
如果(城市数量)移动COVID*cities;cities=(COVID*)malloc(sizeof(COVID)*3);
在while
循环之外。想到这件事这么简单……我真傻!非常感谢你。