Horbyn4zZ
2017-02-07 17:01
采纳率: 72.7%
浏览 956
已采纳

关于scanf读入的一些问题

下图是我在网上找到关于scanf函数的含义
图片说明
然后我写了段代码测试
如下:
#include
int main()
{
char a,b,c;
scanf("%c t%c %c",&a,&b,&c);
printf("%c%c%c\n",a,b,c);
return 0;
}
图片说明

我在scanf函数格式化字符串里面加入了空格字符与非空格字符
按我的理解,我输入"d t e f"(dt之间空一格,ef之间也空一格,te之间空n格)
首先说一下,输出的"d e"第一个字符“d”我能理解,就是d照样输出,t被剔除,但是“te”之间我不是输入了n个空格吗,按照第一幅图第2点定义:“空白字符:空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符”,不是这里输入的n个空格会被略去吗,为什么这里的n个空格会被输出成第二个字符即空格?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 战在春秋 2017-02-07 21:58
    已采纳

    空白字符和其它特殊字符一样,也是字符。

    想接收到def,正确的写法是在t和%c之间添加一个空格。

    scanf("%c t %c %c", &a, &b, &c);
    
    

    **“fix to scanf to do what you intend it to do” is to leave a space before %c. That way you say to scanf to automatically eat whitespaces and special characters, like enter!
    **

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题