我正在使用名为“student”的结构开发一个简单的 C 程序。这是我的代码
#include<stdio.h>
#include<stdlib.h>
struct student {
char name[50];
int id;
float marks_1;
float marks_2;
};
void main(){
int num,a,i;
printf("Enter number of students\n");
scanf("%d",&num);
struct student s[num];
for(i=0;i<num;i++)
{
a=i+1;
printf("Enter name of student number %d\n",a);
scanf("%[^\n]%*c",s[i].name);
}
}
当我运行程序时,我可以正确输入学生人数,但之后我无法输入每个学生对应的姓名。这是我得到的输出。
Enter number of students
2
Enter name of student number 1
Enter name of student number 2
RUN FINISHED; exit value 2; real time: 1s; user: 0ms; system: 0ms
可能是什么问题?任何帮助表示赞赏
最佳答案
scanf("%d",&num);
保留您键入的换行符以将输入发送到输入缓冲区中的程序。因此第一次迭代
for(i=0;i<num;i++)
{
a=i+1;
printf("Enter name of student number %d\n",a);
scanf("%[^\n]%*c",s[i].name);
}
立即找到换行符并扫描空字符串。
在扫描之前使用换行符,方法是将第一个格式更改为 "%d%*c"
或在名称扫描格式的开头添加一个空格以跳过初始空白。
关于c - Scanf 函数不接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18381124/