scanf和空格字符

时间:2018-03-07 09:30:39

标签: c char int scanf

我正在做一个与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

我在I put 45和b 78处运行此代码,因此输入缓冲区如下所示:45 \ n78 \ n,line1需要45忽略\ n,而line2忽略\ n取78并忽略\ n < / p>

char ch, ch2;
printf("Please enter char ch:\n);
scanf("%c",&ch);//line3
printf("Please enter char ch2:\n);
scanf("%c",&ch2);//line4

我调试了这段代码,并且我想要把这个代码放到&#39;在ch,&#39; b&#39;在ch2中,输入缓冲区将如下所示:a \ nb \ n,line3采用&#39; a&#39;忽略\ n而第4行忽略\ n需要&#39; b&#39;并忽略\ n

我认为会发生这种情况,但是当我调试它时,line3需要&#39; a&#39;和line4读取\ n并存储它。

我不明白我认为scanf()应该忽略空格字符。

你可以在这里看到 http://www.cplusplus.com/reference/cstdio/scanf/

1 个答案:

答案 0 :(得分:3)

来自specification

  

<强>%C

     

匹配长度由最大字段宽度指定的字符序列(默认值为1);下一个指针必须是指向char的指针,并且必须有足够的空间容纳所有字符(不添加终止空字节)。 通常跳过领先的空白区域。要首先跳过空白区域,请使用格式中的显式空格。