没有什么名不副其实 2020-03-23 12:23 采纳率: 0%
浏览 1191

C语言关于scanf函数的一个疑问

C语言小白一个,二级水平,遇到了一个问题。
C程序如下,一个简单的输入、输出程序。
运行环境是codeblocks17.12

void main()
{
    char c1,c2;
    scanf("%3c%3c",&c1,&c2);
    printf("c1=%c,c2=%c",c1,c2);
}

当我输入“abcdef<回车>”时

图片说明

当我输入“abcdefgh<回车>”时
图片说明

当我输入“abcde<回车>”时
图片说明

当我输入“abcd<回车><回车>”时
图片说明

为什么会这样?真的不理解,看了网上其他人的一些提问,感觉这个程序不应该是这个结果,是不是编译器配置的问题,还是其他什么原因?有没有大佬可以解答一下,万分感谢!

  • 写回答

5条回答 默认 最新

  • weixin_44372859 2020-03-25 08:34
    关注

    或者你可以试下把两个变量的地址打印出来,查看一下,所谓的%3c应该是要获取3个字符,而c1不是数组,而是一个char变量。其实不必太过于执着scanf,等你以后学到指针就可以利用宏自己写一个类似于scanf的函数

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!