[英]How to solve this gets() function problem?
在我的程序中,如果我使用scanf()
,程序运行良好。 但很明显,如果遇到空格, scanf()
将停止读取输入。 所以,我改用了gets()
。 但问题是我必须使用gets(name[i]);
两次。 如果我只使用一次,它会跳过“主题名称”输入并跳转到“成绩”输入。
你能告诉我问题出在哪里吗? 这是代码,我删除了几乎所有不相关的部分。
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void selection1();
int main()
{
int op;
printf("\n\t\t\t\t\t\t\t\tCHOOSE A NUMBER FROM 0 to 4: ");
scanf("%d", &op);
switch(op)
{
case 0:
exit(0);
break;
case 1:
selection1();
break;
case 2:
//selection2();
break;
case 3:
//selection3();
break;
case 4:
//selection4();
break;
default:
printf("\t\t\t\t\t\t\t\tInvalid Selection!!!\n");
break;
}
return 0;
}
void selection1()
{
char name[20][50], grade[20][5];
double credit[20][2];
int i=0;
for(;;)
{
printf("\t\t\t\t\t\t\t\tEnter Subject Name: ");
gets(name[i]);
//gets(name[i]);
printf("\t\t\t\t\t\t\t\tEnter Grade: ");
scanf("%s", &grade[i]);
printf("\t\t\t\t\t\t\t\tEnter The Course Credits: ");
scanf("%lf", &credit[i]);
}
}
所以,我发现使用scanf(" %[^\n]%*c", &name[i]);
而不是gets(name[i]);
解决这个问题。 感谢所有发表评论的人。 您的评论帮助我得出了这个答案:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.