【发布时间】:2018-04-28 15:47:44
【问题描述】:
我想接受学生的详细信息(姓名、卷号和分数)并打印与输出相同的内容。如果我接受姓名作为字符串,程序运行良好,但当我接受学生姓名时会遇到问题作为一个角色。 代码如下:
#include<stdio.h>
int main()
{
struct student
{
char name;
int rn;
float marks;
};
struct student s[2];
int i;
printf("Enter student's name,roll no. and marks:\n");
for(i=1;i<=2;i++)
{
printf("%d ",i);
scanf("%c %d %f",&s[i].name,&s[i].rn,&s[i].marks);
}
printf("Student's name,roll no. and marks are:\n");
for(i=1;i<=2;i++)
printf("\nname=%c\trn=%d\tmarks=%0.2f\n\n",s[i].name,s[i].rn,s[i].marks);
}
学生 1 的信息完全正确。但学生 2 的输出存在问题。我只想知道学生 2 的实际情况。
【问题讨论】:
-
您已将字段描述符
%c与数据类型char正确匹配,但char似乎是数据类型的错误选择。它代表 one 字符,而对于名称,您可能需要一个足够长的char数组以容纳您的最大长度名称。切换到 char 数组后,您还需要使用字段描述符%s。 -
索引从 0 而不是 1 开始。
-
@JohnBollinger 是的,我明白,但我想使用单个字符作为名称。那该怎么做?
-
@WebKing 正如其他人提到的,首先从
0开始索引i并在%c之前给出空格。 -
非常感谢@achal 和 user3121023。实际上 %c 正在考虑将下一行视为一个字符。当我在 scanf 中的 %c 之前给一个空格时,问题得到了解决。
标签: c arrays character structure