【C】输入输出

几种输入输出的区别

(1)读取字符时:

  • scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);

  • getchar()以Enter结束输入,也不会舍弃最后的回车符;

(2)读取字符串时

  • scanf()以Space、Enter、Tab结束一次输入(自动在字符串后面添加’\0’)

  • gets()以Enter结束输入(用’\0’替代 ‘\n’),接受空格,会舍弃最后的回车符!

(3)输出时

  • puts()在输出字符串时会将’\0’自动转换成’\n’进行输出,也就是说,puts方法输出完字符串后会自动换行。

解决办法

  • 方法1:C语言里提供了函数清空缓冲区,只要在读数据之前先清空缓冲区就没问题了!
    这个函数是fflush(stdin)。
  • 方法2:自己取出缓冲区里的残留数据。
    scanf("%[^\n]",string);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 错误报告 perror函数简化向用户报告特定错误的过程。它的原型定义于studio.h,如下: 如果message...
    d9fc24a0c9a9阅读 1,585评论 0 0
  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 1,748评论 0 6
  • 程序是人机交互的媒介,有输出必然也有输入,第三章我们讲解了如何将数据输出到显示器上,本章我们开始讲解如何从键盘输入...
    梦凡尘阅读 1,529评论 0 2
  • 一、输入和输出流 C 语言的标准输入输出函数都是独立于设备的,不需要考虑如何在特定设备上传输数据;C 语言的库函数...
    seraphzxz阅读 1,148评论 0 51
  • 已经很久没有出来闲逛,本来打算和往常一样,去公司处理一些事,拉开窗帘,看到窗外的蓝天白云,温暖的阳光,突然觉得该给...
    TonyMao阅读 529评论 0 2