《蒟蒻易错笔记》P1:gets()前使用scanf()?
#include <stdio.h>
#include <string.h>
int main(){
char str[1000];
int i,n,m,a,b;
scanf("%d%d",&n,&m);
gets(str);
n--;
for(i=0;i<n;i++)putchar(str[i]);
for(i=n+m;i<strlen(str);i++)putchar(str[i]);
putchar('\n');
return 0;
}
结果是gets还未输入自己真正想要输入的文本就结束了。因为gets会将前面scanf后的换行符当作输入,正确做法是要在gets()前再用一个scanf(“\n”)吸收换行符
scanf("%d%d",&n,&m);
scanf("\n"); //亦可用getchar('\n')
gets(str)
这里还要注意getchar(’\n’)和scanf("\n")的区别
参考前人的详细讲解 ,我就不再赘述了