这是我的c代码:
int main() { int a; for (int i = 0; i < 3; i++) scanf("%d ", &a); return 0; }
当我输入类似的东西时1 2 3
,它会要求我输入更多,我需要输入不是''的东西.
但是,当我将其更改为(或其他不是' '
)时
scanf("%d !", &a);
和输入1 ! 2! 3!
,它不会要求更多的输入.
最后一个空格scanf("%d ", &a);
指示scanf
消耗该数字后的所有空白区域.它将继续读取,stdin
直到您键入不是空白的东西.以这种方式简化格式:
scanf("%d", &a);
scanf
在数字之前仍然会忽略空格.
相反,格式"%d !"
会消耗数字和单个后面的任何空格!
.它在获取此字符时停止扫描,或者在输入流中留下另一个非空格字符.您无法从返回值中判断它是否匹配!
.
scanf
是很笨重,它是很难正确地使用它.它往往是更好的阅读与线输入fgets()
和分析,与sscanf()
甚至简单的功能,例如strtol()
,strspn()
或strcspn()
.