Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是什么意思“scanf(“%[^\n]”,buf);”?它的等效C++语法是什么?_C_Scanf - Fatal编程技术网

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

这是什么意思“scanf(“%[^\n]”,buf);”?它的等效C++语法是什么?,c,scanf,C,Scanf,我是C编程语言的新手。我已经在C++中做了一些编程,我知道SCANF被用来输入,而N意味着下一行,但是我不能理解完整的表达式。 什么是等价的C++语法?< p>这意味着在遇到一个行尾字符之前读取所有的内容,并将结果存储在提供的char *指针中。一个等价的C++语法完全相同,你需要为此而包含,但是在C++中,你应该更喜欢基于字符串的API来扫描: 原因是,您提供的格式字符串SCANF容易出现缓冲区溢出:如果最终用户类型比BUF、C或C++的字符更多,则会继续将数据写入内存,导致未定义的行为。您可

我是C编程语言的新手。我已经在C++中做了一些编程,我知道SCANF被用来输入,而N意味着下一行,但是我不能理解完整的表达式。
什么是等价的C++语法?

< p>这意味着在遇到一个行尾字符之前读取所有的内容,并将结果存储在提供的char *指针中。一个等价的C++语法完全相同,你需要为此而包含,但是在C++中,你应该更喜欢基于字符串的API来扫描: <>原因是,您提供的格式字符串SCANF容易出现缓冲区溢出:如果最终用户类型比BUF、C或C++的字符更多,则会继续将数据写入内存,导致未定义的行为。您可以修复强烈建议将输入限制为缓冲区大小的格式字符串,如下所示:

char buf[100];
scanf("%99[^\n]", buf);
但现在您只能使用99个字符或更少的字符串。另一方面,带有std::string的std::getline不受此限制

char buf[100];
scanf("%99[^\n]", buf);