gpt4 book ai didi

c - 如何使用C中的指针在结构类型数组中获取字符串输入

转载 作者:行者123 更新时间:2023-11-30 19:07:45 28 4
gpt4 key购买 nike

当我运行此代码并尝试在结构类型数组中输入第一个字符串时,程序停止。但我的代码似乎没有错误。我现在能做什么?我使用 Code::Blocks 和 GCC 编译器。

*

#include <stdio.h>
void main()
{
int i, serial, n=4;
struct Student
{
char *name;
char *id;
int semester;
int age;
float cgpa;
};
struct Student stuArr[n];
for(i=0; i<n; i++)
{
serial = i+1;
printf("\t\tStudent No: %d\n", serial);
printf("Input the name of Student-%d:\n", serial);
scanf("%s", &stuArr[i].name);
printf("Input %s's ID:\n", stuArr[i].name);
scanf("%s", stuArr[i].id);
printf("Input %s's semester:\n", stuArr[i].name);
scanf("%d", &stuArr[i].semester);
printf("Input %s's age:\n", stuArr[i].name);
scanf("%d", &stuArr[i].age);
printf("Input %s's CGPA:\n", stuArr[i].name);
scanf("%f", &stuArr[i].cgpa);
}
float tot_cgpa=0, avg_cgpa;
for(i=0; i<n; i++)
{
tot_cgpa += stuArr[i].cgpa;
if(stuArr[i].cgpa < 2.50)
{
printf("%s is in probation.\n", stuArr[i].name);
}
if(stuArr[i].age > 21)
{
printf("%s is more than 21 years old.\n", stuArr[i].name);
}
if(stuArr[i].semester >= 12)
{
printf("%s is in the last semester.\n", stuArr[i].name);
}
}
avg_cgpa = tot_cgpa/10.0;
printf("Average CGPA of %d students: %0.2f\n", n, avg_cgpa);
}

*

最佳答案

您的学生姓名和 ID 未正确分配,它们是未初始化的指针。

您可以使用 malloc 手动分配它们,也可以在结构中定义它们,如下所示:

struct Student
{
char name[32];
char id[32];
int semester;
int age;
float cgpa;
};

关于c - 如何使用C中的指针在结构类型数组中获取字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472450/

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