C编程 – scanf中空格的作用()
我写了以下代码:
#include int main() { int a, b; printf("Enter values of a and b\n"); scanf(" %d%d ", &a, &b); // Note the two spaces before and after %d // ^This^ printf("a = %db = %d\n", a, b); return 0; }
该程序运行如下:
aps120797@XENON-PC:/mnt/d/Codes/LetUsC$ ./a.out Enter values of a and b 1 2 3 a = 1 b = 2
我的问题是,为什么它需要三个输入而不是两个(两个%d在scanf()中),即使它是三个,为什么它会跳过最后一个?
格式字符串中的空格表示跳过输入中的任何空格序列(空格,换行符,制表符),并在到达第一个非白色字符或输入结尾时停止扫描。 下一个字符留在输入缓冲区中,因此可以由下一个格式操作符(如果有)或下一个输入操作(如果您在scanf()
之后调用getc()
读取它,它将读取'3'
字符。
当您在格式字符串的末尾放置一个空格时,它会在2
之后跳过换行符,并继续扫描直到它到达下一个非白色字符。 因此它必须在停止之前到达3
。