Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 通过函数修改结构数组的单个元素_Arrays_C_Pointers_Struct - Fatal编程技术网

Arrays 通过函数修改结构数组的单个元素

Arrays 通过函数修改结构数组的单个元素,arrays,c,pointers,struct,Arrays,C,Pointers,Struct,我有一段代码,用来记录城市的名字和他们在一系列结构中的总的新冠病毒病例。内存分配必须动态完成,最初有3个空空间。用户输入3个城市后,将为下一次添加分配更多内存。但是,每当我添加一个城市和案例总数时,我都无法访问它们。我得到随机目录、字符或随机数。我认为我使用指针的方式有问题。我到底做错了什么 #include <stdio.h> #include <stdlib.h> #define MAX_CHAR 50 typedef st

我有一段代码,用来记录城市的名字和他们在一系列结构中的总的新冠病毒病例。内存分配必须动态完成,最初有3个空空间。用户输入3个城市后,将为下一次添加分配更多内存。但是,每当我添加一个城市和案例总数时,我都无法访问它们。我得到随机目录、字符或随机数。我认为我使用指针的方式有问题。我到底做错了什么

    #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
循环之外。想到这件事这么简单……我真傻!非常感谢你。