【发布时间】:2020-10-09 03:22:58
【问题描述】:
在这里,我创建了一个以姓名、卷号、分数等为成员的学生结构。所以,我想做的是每次迭代循环时创建一个新结构,并在循环时将数据保存在其中。
所以,我创建了一个变量stdname,它每次迭代都会改变它的值,并用它来命名一个新学生,但它不起作用。我对 C 很陌生,我不知道我的代码有什么问题。
#include <stdio.h>
struct Marks
{
int phy;
int chem;
int math;
};
struct Student{
char name[50];
int rollN0;
char remarks[100];
struct Marks marks;
};
int main()
{
for (int i=0; i<10; i++)
{
char stdname[50];
sprintf(stdname,"student%d",i+1);
struct Student stdname;
printf("Enter the following data of Student No. %d:\n", i+1);
//taking data from user and storing
}
}
【问题讨论】:
-
请更清楚地描述问题。 “它不起作用” 毫无帮助。我可以立即看到的一个问题是,您使用相同标识符的结构重新定义了名为
stdname的char数组。 C 语言不允许这样做。编译器应该已经发布了一条引用该代码行的错误消息,并带有一条类似于“重新定义”的消息。它试图指出错误,以便您修复它。 -
如果这是一个练习或家庭作业,请edit你的帖子包含完整的描述。无论如何,您需要告诉我们您认为该程序有什么问题。发布您对其进行测试的输入、预期输出和实际结果。
-
总是在编译时启用警告,并且不接受代码,直到它编译时没有警告。要启用警告,请将
-Wall -Wextra -pedantic添加到您的gcc/clang编译字符串(也可以考虑添加-Wshadow以警告阴影变量)。对于 VS(Windows 上的cl.exe),使用/W3。所有其他编译器将具有类似的选项。阅读并理解每个警告——然后去修复它。他们将识别任何问题,以及它们发生的确切位置。 -
"24:24: error: conflicting types for ‘stdname’" -
你不能用两种不同的类型两次声明同一个变量名。