C语⾔的scanf输⼊字符串的回车问题
⼀、什么时候⽤getchar()
1、除了%c的输⼊⽽⾔:scanf输⼊:abc[回车]后,遇到回车结束,但是回车还留在输⼊流中。下⼀个scanf在输⼊前碰到回车,会⾃动把回车抛弃,然后再输⼊:efg,再碰到回车结束。所以加了getchar()时,它会吃掉⼀个回车。如果不加,在输⼊前,它会⾃动删除这个回车,所以结果是⼀样的。重点是:空格、回车、跳格等结束符在输⼊前碰到的话,会⾃动抛弃,输⼊后碰到的话,就会认为结束。
2、针对%c的输⼊⽽⾔:%c遇到空格、回车、跳格等结束符都是会读取的。
例如:scanf("%c",&i);
scanf("%c",&j);
c语言scanf能输入中文吗输⼊a[回车]b的话,就会是:i = a; j = 回车;
但如果是:scanf("%c",&i);
getchar();
scanf("%c",&j);
输⼊a[回车]b,会是:i = a;  j = b;
所以⼀般⽤getchar()吃回车,都是⽤在%c 后⾯。
3、应⽤:输⼊⼀个⼤写字母,输出对应的⼩写字母。输⼊数据的第⼀⾏为⼀个正整数T, 表⽰测试数据的组数。然后是T组测试数据。每组测试数据包含⼀个⼤写字母C。
对于每组测试数据, 输出它的⼩写字母。
#include <stdio.h>
int main()
{
int i,t;
scanf("%d",&t);
getchar();
char a;
for(i=0;i<t;i++)
{
scanf("%c",&a);
getchar();
printf("%c\n",a+32);
}
return 0;
}
  如果scanf("%d",&t);后不加getcahr();输⼊:2 [回车],则 t = 2; a = 回车
如果scanf("%c",&a);后不加getcahr(),输⼊:2 [回车] A [回车] B ,则 t = 2; a = A ,下⼀个循环,a = 回车,⽽不是 B。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。