【发布时间】:2014-02-17 21:18:48
【问题描述】:
我正在尝试使用 scanf 读取 C++ 中的字符串。我试过了
char cmd[40];
scanf("%s", cmd);
string str(cmd);
但这给了我一个我想要的字符串加上一些无意义的字符。
【问题讨论】:
-
为什么在 C++ 中使用 scanf?还要使用有限的 scanf 字符串,所以你不能用完预分配的数组。
-
你的测试输入是什么,你得到了什么?因为我绝对不能复制这个。
-
实际上,请确保您输入的符号不超过 39 个...需要为终止
\0留出空间... -
@herohuyongtao 仅仅因为当您输入一个长度超过您分配的 39 字节加上终止符空间的字符串时您的程序不会立即崩溃和烧毁并不意味着它是正确的。那是真正的未定义行为......你很幸运。