c语言的scanf接收到底是忽略空格还是不忽略呢?

如题所述

举几个例子,或许你就对这个函数理解了,由于一般都是用这两个字符控制输入的,所以只讨论空格回车的情况

1.输入数据为非char类型的情况:
int a, b;
scanf("%d%d",&a,&b);

此时的输入方式可以是1空格2
或者1空格空格。。2
或者1回车2
或者1回车回车。。2

此时可以得出结论,scanf接收不但忽略空格还忽略回车
int a, b;
scanf("%d,%d",&a,&b);

此时的输入方式可以是1,空格2
或者1,空格空格。。2
或者1,回车2
或者1,回车回车。。2 (只需要保证1紧接着逗号就行,随便奇葩的输入都正确)

此时可以得出结论,scanf接收不但忽略空格还忽略回车,但是在有逗号的情况下必须遵循一定的格式,否则出错。

2.再看输入数据为char类型的情况:
char a, b;
scanf("%c%c",&a,&b);// 或者scanf("%c,%c",&a,&b);

此时的输入只能按格式来,不会忽略任何字符。

就说这么多了,可能你考虑的比较多,我有没说到的,若有疑问可以提出来一起讨论下
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-06
复制粘贴一大堆全是废话,scanf("%c",&c)时,接受空格,其他时候忽略空格。
第2个回答  2013-09-26
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
第3个回答  2013-09-26
忽略空格、回车、tab等
第4个回答  2013-09-26
空格被忽略掉
相似回答