c用gets()函数输入字符串按回车后,回车符号是否也被输入到字符串当中?如果是,怎么避免回车符被写入

#include<stdio.h>#include<string.h>#include<ctype.h>char*stmcpy(chars1[],chars2[],int... #include<stdio.h>
#include<string.h>
#include<ctype.h>
char* stmcpy(char s1[],char s2[],int n);
int main()
{
char a[50]={0};
char b[50];
char c[50]={0};
char pd='y';
int n;
while((tolower(pd)=='y'))
{
printf("请输入字符串!\n");
gets(b);
printf("请输入复制长度!\n");
scanf("%d",&n);
strcpy(c,stmcpy(a,b,n));
puts(c);
printf("是否继续(y/n)?\n");
pd=getchar();
}
return 0;
}
char* stmcpy(char s1[],char s2[],int n)
{
int m;
for(m=0;m<n;m++)
{
s1[m]=s2[m];
}
return s1;
}

为什么在第二次循环的时候gets()函数被跳过没有执行?
展开
 我来答
illeie00
推荐于2016-01-23 · TA获得超过7423个赞
知道小有建树答主
回答量:922
采纳率:0%
帮助的人:420万
展开全部
不会被输入到字符串中。
附:
【1】函数:gets
【2】头文件:stdio.h
【3】功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在str指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
【4】注意:本函数可以无限读取,不会判断上限,所以程序员应该确保str的空间足够大,以便在执行读操作时不发生溢出。
追问
谢谢,我在循环输入中用到了scanf(),和getchar(),为什么在函数第二次循环的时候gets()函数没有被执行到呢?
追答
手头没编译器,没法帮你调试。
可能是pd=getchar();这步你输入y打了回车之后,在缓冲区中遗留了这个回车,gets()会将这个回车取走,不再等待键盘输入。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式