我试图使用scanf读取C++中的字符串.我试过了
char cmd[40];
scanf("%s", cmd);
string str(cmd);
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个我想要的字符串以及一些非感觉字符.
scanf使用说明%s符将在输入字符串之后存储一个空终止符,以防止垃圾字符进入字符串...除非您的代码具有未定义的行为.
您的问题可能是输入溢出缓冲区,导致未定义的行为; 当使用%s没有适当缓冲区大小的说明符时,scanf可以在缓冲区的边界外写入.此时,您无法保证程序的行为方式.
切勿使用%s与scanfwihtout提供一个缓冲区大小:
char cmd[40];
scanf("%39s", cmd);
string str(cmd);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |