以下两个scanf()函数之间有什么区别:
scanf(" %79[^\n]\n",name);
和
scanf(" %79[^\n]s\n",name);
我是C的新手如果有人认为这是一个菜鸟问题,请原谅我。我做了所有可能的研究,但我无法区分上述两种情况。
上述两者的运作方式有何不同?第一个将从stdin中取出所有字符(直到79个字符),直到它遇到一个' \ n'字符。那么第二个不会以同样的方式工作吗?我有这个疑问,因为在一个程序中第一个工作正常,但第二个没能正确输入字符串。
除了上面的主要问题,只是为了澄清我认为' \ n'在scanf函数结束时将删除' \ n'输入字符串时输入的缓冲区中的字符。我是对还是错?
答案 0 :(得分:3)
scanf(" %79[^\n]\n",name);
匹配零个或多个空白字符,最多79个非换行符和换行符,并将非换行符保存到name
。
scanf(" %79[^\n]s\n",name);
匹配零个或多个空白字符,最多79个非换行符,字符s
和换行符,并将非换行符保存到name
。