【发布时间】:2018-08-15 08:20:27
【问题描述】:
我在做一个与scanf()相关的简单例子
int a, b;
printf("Please enter int a:\n);
scanf("%d",&a);//line 1
printf("Please enter int b:\n);
scanf("%d",&b);//line 2
我在 a I put 45 和 b 78 处运行此代码,因此输入缓冲区如下所示:45\n78\n,line1 需要 45 忽略 \n,line2 忽略 \n 需要 78 并忽略 \n
char ch, ch2;
printf("Please enter char ch:\n);
scanf("%c",&ch);//line3
printf("Please enter char ch2:\n);
scanf("%c",&ch2);//line4
我调试了这段代码,我想把'a'放在ch中,把'b'放在ch2中,所以输入缓冲区将如下所示:a\nb\n,line3接受'a'忽略\n和line4忽略 \n 接受 'b' 并忽略 \n
我以为会发生这种情况,但是当我调试它时 line3 接受 'a',而 line4 读取 \n 并存储它。
我不明白我认为 scanf() 应该忽略空白字符。
【问题讨论】:
-
请注意,您的代码中缺少相应的双引号。
-
@machine_1 是的,这只是在帖子中而不是在代码中,我会立即编辑它
-
%c、%[]和%n指令不跳过前导空白字符。