我正在做一个与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/答案 0 :(得分:3)
<强>%C 强>
匹配长度由最大字段宽度指定的字符序列(默认值为1);下一个指针必须是指向char的指针,并且必须有足够的空间容纳所有字符(不添加终止空字节)。 通常跳过领先的空白区域。要首先跳过空白区域,请使用格式中的显式空格。