-1
我是C编程语言的新手。我用C++编写了一些程序,我知道scanf用于输入,\n
表示下一行,但我无法理解完整的表达式。 什么是等效的C++语法?这是什么意思“scanf(”%[^ n]“,buf);” ?它的等价C++语法是什么?
我是C编程语言的新手。我用C++编写了一些程序,我知道scanf用于输入,\n
表示下一行,但我无法理解完整的表达式。 什么是等效的C++语法?这是什么意思“scanf(”%[^ n]“,buf);” ?它的等价C++语法是什么?
这意味着“读取所有内容,直到遇到行尾字符,并将结果存储在提供的char*
指针中”。一个相当于C++的语法是完全一样的(你需要包括<cstdio>
为该),但在C++中,你应该更喜欢基于字符串的API来scanf
:
string buf;
getline(cin, buf);
这样做的原因是,scanf
与格式字符串如果最终用户输入的字符数大于buf
的大小,则C或C++将继续将数据写入内存,导致未定义的行为。您可以修复格式字符串(强烈推荐)的输入限制缓冲区的大小,类似这样的:
char buf[100];
scanf("%99[^\n]", buf);
但现在你被限制在99个字符以内的字符串。另一方面,std::getline
与std::string
没有此限制。