以下两个 scanf() 函数有什么区别:
scanf(" %79[^\n]\n",name);
和
scanf(" %79[^\n]s\n",name);
我是 C 新手,所以如果有人认为这是一个菜鸟问题,请原谅我。我做了所有我能做的研究,但我无法区分以上两者之间的区别。
上述两者的功能有何不同?第一个将从标准输入中获取所有字符(直到 79 个字符),直到遇到 '\n' 字符。那么第二个不会以同样的方式工作吗?我有这个疑问,因为在一个程序中,第一个程序工作正常,但第二个程序无法正确输入字符串。
除了上面的主要问题只是为了澄清之外,我认为 scanf 函数末尾的 '\n' 将从字符串输入期间输入的缓冲区中删除 '\n' 字符。我是对还是错?
最佳答案
scanf(" %79[^\n]\n",name);
这会匹配零个或多个空白字符、最多 79 个非换行符和一个换行符,并将非换行符保存到 name
中。
scanf(" %79[^\n]s\n",name);
这会匹配零个或多个空白字符、最多 79 个非换行符、字符 s
和换行符,并将非换行符保存到 name
中。
关于c - scanf 格式说明符之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709955/