c语言 单链表的input函数为什么跳过字符变量的定义?

如题,求问各位大神为什么我这个input函数会自动跳过scanf("%c",&L[i].tru)?
int input(QUESTION *L,int n,int len)
{
int i;
printf("请输入题目与其四个选项,以及正确答案\n");
for(i=0;i<n;i++)
{
printf("请输入第%d题:",i+1);
L[i].num=len+i;
scanf("%s",L[i].question);
printf(">>>>>请输入选项A:");
scanf("%s",L[i].ans1);
printf(">>>>>请输入选项B:");
scanf("%s",L[i].ans2);
printf(">>>>>请输入选项C:");
scanf("%s",L[i].ans3);
printf(">>>>>请输入选项D:");
scanf("%s",L[i].ans4);
printf("请输入正确答案(A,B,C,D):");
scanf("%c",&L[i].tru);
}
printf(">>>>>录入成功!\n");
return n+len;
}
这是单链表结点定义:
typedef struct question
{ int num; //题目编号
char question[100];
char ans1[50];
char ans2[50];
char ans3[50];
char ans4[50]; //定义4个答案
char tru;//正确答案
}QUESTION;

scanf输入%c时容易出问题,因为你输入的与前一个输入内容的分隔符将被输入到字符变量中,改一下:

int i;改成int i; char s[40];

scanf("%c",&L[i].tru);改成scanf("%s",s); L[i].tru=s[0];

温馨提示:答案为网友推荐,仅供参考
相似回答