如何在C中使用指针在结构类型数组中获取字符串输入
当我运行此代码并尝试在结构类型数组中输入第一个字符串时,程序停止。但我的代码似乎没有错误。我现在能做什么?我使用Code::Blocks和GCC编译器。 *如何在C中使用指针在结构类型数组中获取字符串输入,c,arrays,string,pointers,structure,C,Arrays,String,Pointers,Structure,当我运行此代码并尝试在结构类型数组中输入第一个字符串时,程序停止。但我的代码似乎没有错误。我现在能做什么?我使用Code::Blocks和GCC编译器。 * #包括 void main() { int i,串行,n=4; 体类型 { 字符*名称; 字符*id; 学期内; 智力年龄; 浮动cgpa; }; 结构学生stuArr[n]; 对于(i=0;i=12) { printf(“%s在上学期。\n”,stuArr[i].name); } } 平均cgpa=总cgpa/10.0; printf(“
#包括
void main()
{
int i,串行,n=4;
体类型
{
字符*名称;
字符*id;
学期内;
智力年龄;
浮动cgpa;
};
结构学生stuArr[n];
对于(i=0;i=12)
{
printf(“%s在上学期。\n”,stuArr[i].name);
}
}
平均cgpa=总cgpa/10.0;
printf(“%d名学生的平均CGPA:%0.2f\n”,n,平均CGPA);
}
*您的学生姓名和id分配不正确,它们是未初始化的指针 您可以使用malloc手动分配它们,也可以在结构中定义它们,如下所示:
struct Student
{
char name[32];
char id[32];
int semester;
int age;
float cgpa;
};
您必须为字段分配内存,因为它们是
char*
。或者定义实数组。&stuArr[i]的类型。name
是char**
,而不是char*
(指针占用的内存本身用作字符串的存储目标。)和stuArr[i]。name
不是它的单独名称。scanf(%s,&stuArr[i].name)代码>应该是scanf(“%s”,stuArr[i].name)代码>-只有非字符串才需要指向存储值的变量的指针。是否可以使其保持未初始化状态,以避免指定字符串的长度?
struct Student
{
char name[32];
char id[32];
int semester;
int age;
float cgpa;
};