我想获取一个包含学生姓名的课程的信息。然后打印出来 我使用了结构,但代码不能正常工作
#include<stdio.h>
#include <string.h>
int size,i,j;
struct Student
{
char name[50];
int number;
};
typedef struct Student info1;
info1 print[100];
int main()
{
printf("Size of class : ");
scanf("%d",&size);
for(j=0;j<(20);)
{
for(i=1;i<=size;i++)
{
printf("%d.Name:",i);
scanf("%s",&info1.name);// i get an error here that an exp is expected
print[j]=info1.name; // i get an error here that an exp is expected
j++;
printf("Rollno:");
scanf("%d", &info1.number);// i get an error here that an exp is expected
print[j]=info1.number;// i get an error here that an exp is expected
}
}
for (j = 0;j <(20);)
{
printf("%s Name", print[j]);
j++;
printf("%d Rollno", print[j]);
}
return 0;
}
在调试时我收到以下错误:
在info1之前的预期exp
答案 0 :(得分:1)
在您的代码中,用于所有用法,例如
scanf("%s",&info1.name);
^^^^^
是错误的,因为info
是数据类型的别名,而不是变量。
您已经定义了该类型的变量print
,并使用它。
答案 1 :(得分:0)
struct Student
{
char name[50];
int number;
};
这很好,没有例外
typedef struct Student info1;
info1 print[100];
这有力地告诉我你不知道自己在做什么。 info1现在是struct Student的别名。而是一个奇怪的名字。然后你创建一个名为print的缓冲区,容量为一百。
我们可以轻松修复编译时错误。您可以指定一个strudnet
struct Student astudent;
print[i] = astudent;
你必须先把他初始化
scanf("%s %d", astudent.name, &astudent.number);
但您无法指定类型&#34; info1&#34;。 &#34; print&#34;对于一系列学生来说,这是一个非常糟糕的选择。制作&#34; printlist&#34;至少。