#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()函数被跳过没有执行?
谢谢,我在循环输入中用到了scanf(),和getchar(),为什么在函数第二次循环的时候gets()函数没有被执行到呢?
追答手头没编译器,没法帮你调试。
可能是pd=getchar();这步你输入y打了回车之后,在缓冲区中遗留了这个回车,gets()会将这个回车取走,不再等待键盘输入。