关于scanf("%[^\n]",str);

Schordinger 2017-12-30 10:34:39
scanf("%[^\n]",str);这句话是什么意思呢,是碰见了回车就退出然后把缓冲区里面的内容按字符串格式输入str中,然后回车还留在缓冲区里是吧,要以这个格式读入下一个字符串的时候,要先getcahr读掉一个回车。
那么在格式字符串后加一个\n即scanf("%[^\n]\n",str);会是什么效果呢,原以为是把回车前的内容给str,然后读掉回车,结果scanf好像结束不掉了?
...全文
778 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Schordinger 2018-01-01
  • 打赏
  • 举报
回复
我好像懂了,%[^\n]读到回车就把缓冲区回车之前的赋给要输入的字符串,要是在scanf格式字符串最后放\n,那么他会一直等你输入一个空格,tab,回车的东西。读字符串时,为了避免读到上次剩下的回车,可以使用" %s"(%前有个空格,会忽略掉开始的所有的空白字符)或者scanf("%[^]%*c",str);%*c表示读入一个字符,但不向任何地方输入

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧