scanf格式说明符之间的区别

时间:2014-05-17 09:58:52

标签: c scanf

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

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

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

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

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

除了上面的主要问题,只是为了澄清我认为' \ n'在scanf函数结束时将删除' \ n'输入字符串时输入的缓冲区中的字符。我是对还是错?

1 个答案:

答案 0 :(得分:3)

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

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


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

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