AEsun 2014-11-18 10:31 采纳率: 100%
浏览 2711
已采纳

为什么scanf分辨不出空格和空字符,gets()就可以分辨出来

我是新手,刚刚学习字符串,为什么scanf分辨不出空格和空字符,gets()就可以分辨出来,分辨的原理是是什么?比如在scanf中"hello world"就只有“hello",但gets中就是"hello world"?

  • 写回答

7条回答

  • Conmajia 2014-11-18 10:54
    关注

    对scanf而言,空格属于分隔符,会以空格作为结尾。比如你输入字符串"hello[空格]world[回车]",对scanf而言,它首先找到第一个非空字符"h",然后一直继续到下一个空字符"[空格]"结束,因此scanf得到的是"hello"。gets是以换行(行结束)符作为结束的判定,所以gets会一直读取到"[回车]",得到字符串为"hello world"。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误