gpt4 book ai didi

c - "scanf("%[^\n ]",buf);"是什么意思?它的等效 C++ 语法是什么?

转载 作者:行者123 更新时间:2023-11-30 18:55:48 25 4
gpt4 key购买 nike

我是 C 编程语言新手。我用 C++ 做过一些编程,我知道 scanf 用于接受输入, \n 表示下一行,但我无法理解完整的表达式。等效的 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::getlinestd::string另一方面,则不受此限制。

关于c - "scanf("%[^\n ]",buf);"是什么意思?它的等效 C++ 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26326179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com