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()函数被跳过没有执行? 展开
#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()函数被跳过没有执行? 展开
1个回答
展开全部
追问
谢谢,我在循环输入中用到了scanf(),和getchar(),为什么在函数第二次循环的时候gets()函数没有被执行到呢?
追答
手头没编译器,没法帮你调试。
可能是pd=getchar();这步你输入y打了回车之后,在缓冲区中遗留了这个回车,gets()会将这个回车取走,不再等待键盘输入。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询