c语言gets函数被跳过 c语言 gets函数的用法

gets()函数没有执行,直接跳过了!求解释!不是被跳过了,因为你在输入y之后按了一下回车,gets()函数将回车当成输入给接收了,所以会出现这样的问题,只需要在gets(a)前面加上一个getchar()即可,源代码如下:
【c语言gets函数被跳过 c语言 gets函数的用法】#includestdio.h
#includectype.h
#includectype.h
int is_within(char a[],char *b);
int main()
{
char a[50]={0};
char b[50]={0};
char pd='y';
int n=0;
while((tolower(pd)=='y'))
{
printf("请输入第一个字符串!\n");
getchar();
gets(a);//在第二次循环的时候直接跳过,没有被执行到!
printf("请输入第二个字符串!\n");
gets(b);
n=is_within(a,b);
if(n==1)
{
printf("找到!");
}
else
{
printf("没有找到!");
}
printf("是否继续(y/n)?\n");
//scanf("%c",pd);
pd=getchar();
}
return 0;
}
is_within(char a[],char *b)
{
int i=0;
int m=0;
while(a[i]!='\0')
{
for(m=0;;)
{
if(a[i+m]==*(b+m))
{
m++;
//*b++;
if(*(b+m+1)=='\0')
{
return 1;
}
}
else
break;
}
i++;
}
return 0;
}
我已经测试了 , 如果还有其他问题请追问
c语言 gets直接跳掉了//要吃掉输入第二个数字时,输入的回车符才行,已为你改好
#include stdio.h
#include string.h
int main()
{
char shuru[10];
char jia[10]= "+";
char jian[10]= "-";
char cheng[10]= "*";
char chu[10]= "/";
int a,b,c;
printf("输入第一个数字:");
scanf("%d",a);
printf("输入第二个数字:");
scanf("%d",b);
getchar();
printf("请输入一个运算符号:");
gets(shuru);
if(strcmp(shuru,jia)== 0)
{
c= a+b;
}
if(strcmp(shuru,jian)== 0)
{
c= a-b;
}
if(strcmp(shuru,cheng)== 0)
{
c= a*b;
}
if(strcmp(shuru,chu)== 0)
{
c= a/b;
}
printf("\n结果是%d",c);
return 0;
}
程序里面为什么第一个gets函数不能执行,直接跳过了~~(C语言)你还是理解错了
gets(ch);
是读到一行结尾,存入ch
我猜你在gets之前,做过scanf之类的,scanf处理了数据,却把换行符留在那里没有处理
所以你gets得到的就只是一个空行了 。
getchar()的作用是读一个字符 , 用了它之后,就刚好吃掉了那个换行符,所以gets得以顺利运行 。
你可以用一个while循环,反复gets,直到读出的不是空字串 。
另外一个方法是不要scanf,而是定义一个缓存,然后用gets把所有数据都读到自己的缓存字符串中,再用sscanf从字符串而不是屏幕去读取数据 。
看你的应用场合了
C语言goto语句跳过了我的gets函数 , 谁知道怎么解决?你猜的没错,是会多出一个回车的,因为scanf_s("%d",i);只获取了输入流中的整数 , 跳到第一个gets函数时 , 它会获得之前剩下的回车,如果输入流为空,那么它会等待用户输入 。
修改方式:你在goto start;之前加上一个getchar();来获取那个回车符,然后再跳转 。
c语言gets函数被跳过的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言 gets函数的用法、c语言gets函数被跳过的信息别忘了在本站进行查找喔 。

    推荐阅读