使用结构,我需要存储 2 个学生信息并显示他们的结果


#include<stdio.h>
struct student{
char name[80];
char subject
char country;
};
int main(){
struct student s[10];
int i;
printf("Enter the information of the students:n");
for(i=0;i<4;++i)
{
printf("nEnter name of the student: ");
scanf("%s",&s[i].name);
printf("nEnter the subject of the student: ");
scanf("%s",&s[i].subject);
printf("nEnter name of the student country: ");
scanf("%s",&s[i].country);
}
printf("n showing the input of student information: n");
for(i=0;i<10;++i)
{
printf("nName: n");
puts(s[i].name);
printf("nMajor: n",s[i].subject);
printf("nCountry: n",s[i].country);
}
return 0;
}

当我尝试显示结果时,它没有显示主题和国家。你能告诉我我的编码有什么问题吗?

它没有显示主题和国家,还是只显示第一个字母?

我不熟悉C,但我建议你改变

char variableName 

char variableName[size]

正如您在名义上拥有的那样,但在国家和主题中没有。我不确定这是否是您的问题,但可能是,我相信只有 char 变量名称只会存储用户输入的一个字符。

您需要

提供转换模式,char它是%c

printf("nMajor: %cn",s[i].subject);
printf("nCountry: %cn",s[i].country);

scanf("%s",&s[i].name); 

不正确,应该是

scanf("%s", s[i].name); // s[i].name is already an array

要读取字符,您还需要传递正确的转换模式

scanf("%c", &s[i].subject);
scanf("%c", &s[i].country);

你的struct应该是这样的:

struct student{
char name[80];
char subject[80];
char country[80];
};

相关内容

  • 没有找到相关文章

最新更新