【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);

你可能感兴趣的:(【C】输入输出)