我是C编程语言的新手。我已经用C ++做了一些编程,我知道scanf用于获取输入,\n
表示下一行,但我无法理解完整的表达式。
什么是等效的C ++语法?
答案 0 :(得分:2)
这意味着“在遇到行尾字符之前读取所有内容,并将结果存储在提供的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
不受此限制。