首页 > 解决方案 > 在 C++ 中使用变量声明结构数组

问题描述

尝试通过键入请求的限制来更改结构数组的位置。当我尝试通过使数组声明成为变量来做到这一点时,它只是说“分段错误(核心转储)”我该如何解决这个问题并允许数组工作?这是我正在尝试制作的代码示例:

#include <stdio.h>
struct Employee {
    char firstName[20];
    char lastName[20];
    unsigned int age;
    char gender;
    double hourlySalary;
};
int main(){
    int limit;
    printf("How much employees do you wish to input\n");
    scanf("%d", &limit);
    int number = limit;
    struct Employee Employ[number];
    
    for(unsigned int i = 0; i < limit; ++i){
        ("\n\t Enter employee first name\n");
        scanf("%s", &Employ[i].firstName);
        ("\n\t Enter employee last name\n");
        scanf("%s", &Employ[i].lastName);
        ("\n\t Enter employee age\n");
        scanf("%d", &Employ[i].age);
        ("\n\t Enter employee hourly salary\n");
        scanf("%lf", &Employ[i].hourlySalary);
    }
    for(unsigned int i = 0; i < limit; i++){
        printf("\n\tfirstname\tlastname\tage\thourlysalary\n%s\t%s\t%d\t%lf",Employ[i].firstName,Employ[i].lastName,Employ[i].age,Employ[i].gender,Employ[i].hourlySalary);
    }
}

预期结果和输入:

在此处输入图像描述

标签: arrayscstruct

解决方案


您应该扫描一个没有 & 的字符数组,数组的名称已经是一个指针。

scanf("%s", Employ[i].firstName)

推荐阅读