使用 scanf 读取C++字符串
Reading a string in C++ using scanf
我正在尝试使用 scanf 读取C++中的字符串。我试过了
char cmd[40];
scanf("%s", cmd);
string str(cmd);
但这给了我一个我想要的字符串加上一些无意义的字符。
带有
%s
说明符的scanf
将在输入字符串之后存储一个空终止符,以防止垃圾字符进入字符串...除非代码具有未定义的行为。
您的问题可能是输入溢出缓冲区,导致未定义的行为;在没有适当缓冲区大小的情况下使用%s
说明符时,scanf
可能会写入缓冲区边界之外。此时,您无法保证程序的行为方式。
切勿将%s
与提供缓冲区大小的scanf
一起使用:
char cmd[40];
scanf("%39s", cmd);
string str(cmd);