C语⾔,需要getchar()接收回车的情况
1、先scanf后getchar()
int main(){
char ch, arr[10];
scanf("%s", arr);
ch = getchar();
printf("output: arr = %s", arr);
printf("output: ch = %c", ch);
return0;
}
运⾏结果如下:
这时候需要在ch=getchar()前⾯加getchar()接收回车
但是当使⽤gets()来接收arr的话就不需要接收回车
2、两个getchar()
int main(){
char ch1, ch2;
ch1 = getchar();
c语言char的用法ch2 = getchar();
printf("outout: ch1 = %c\n", ch1);
printf("output: ch2 = %c", ch2);
return0;
}
运⾏结果如下:
这时候需要在ch1和ch2之间加⼀个getchar()
为什么需要⽤getchar()吸收回车?
在这⾥需要说⼀下%d和%c(也就是getchar())的区别:使⽤%d时,会将空格、回车、tab当作分隔符,不会当作数据读取使⽤;使⽤%c时会将所有的输⼊内容全部作为数据输⼊
所以当我们输⼊⼀个字符时,如果前⾯曾经有输⼊的话就会将前⾯输⼊的回车或者空格作为输⼊数据
那么除了使⽤以上两种⽅法吸收回车外,还有其他⽅法吗?
1)可以使⽤fflush(stdin);来清空输⼊流中的内容,这样输⼊字符时缓冲区就没有数据可以作为输⼊了
2)可以使⽤while(getchar() != '\n');来接收垃圾字符,因为⽆论如何输⼊,最终都是要敲回车的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论