Horbyn4zZ 2017-02-07 17:01 采纳率: 100%
浏览 993
已采纳

关于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!
    **

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?