【问题标题】:Difference between scanf format specifiersscanf 格式说明符之间的区别
【发布时间】:2014-05-17 09:58:52
【问题描述】:

以下两个scanf()函数有什么区别:

scanf(" %79[^\n]\n",name);

和

scanf(" %79[^\n]s\n",name);

我是 C 的新手,如果有人认为这是一个菜鸟问题,请原谅我。我做了所有我能做的研究,但我无法区分上述两者之间的区别。

以上两者的运作方式有何不同?第一个将从标准输入中获取所有字符(直到 79 个字符),直到遇到 '\n' 字符。那么第二个不会以同样的方式工作吗?我有这个疑问,因为在程序中第一个工作正常,但第二个未能正确输入字符串。

除了上面的主要问题之外,我认为 scanf 函数末尾的 '\n' 将从字符串输入期间输入的缓冲区中删除 '\n' 字符。我是对还是错?

【问题讨论】:

标签: c scanf


【解决方案1】:
scanf(" %79[^\n]\n",name);

这匹配零个或多个空白字符、最多 79 个非换行符和一个换行符,并将非换行符保存到 name。


scanf(" %79[^\n]s\n",name);

这匹配零个或多个空白字符,最多 79 个非换行符,字符 s 和一个换行符,并将非换行符保存到 name。

【讨论】:

  • 这是否与我们在 scanf("%s",name); 中编写的 %s 有任何关系? ?
  • @user3647289 不,不是。
  • 我有这个疑问,因为我已经看到他们在某些网站上使用 scanf(" %79[^\n]s\n",name);输入一个包含空白字符的字符串。
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2021-10-29
  • 2014-02-23
  • 2014-01-06
相关资源
最近更新 更多