求助啊

cf4460038 2012-05-27 08:54:32
为什么编译下面程序段的时候会出现奇怪的结果呢?在最后输出的时候,会有奇怪的字符。

#include <iostream>
#include <string> // string.h 则是 C 语言提供的标准库。
#include <cstring> // cstring 是 string.h 头文件的 C++ 版本的标准库。

using namespace std;

int main()
{
string in_str;// 用于读入字符串的string 对象
const size_t str_size = 10;
char result_str[str_size+1];
// 读入字符串
cout << "Enter a string(<=" << str_size << " characters):" << endl;
cin >> in_str;
// 计算需复制的字符的数目
const char *str = in_str.c_str();
cout << str << endl;
size_t len = strlen(str);
cout << len << endl;
if (len > str_size) {
len = str_size;
cout << "String is longer than " << str_size
<< " characters and is stored only "
<< str_size << " characters!" << endl;}
// 复制len 个字符至字符数组result_str
strncpy(result_str, in_str.c_str(), len);
// 在末尾加上一个空字符(null 字符)
result_str[len+1] = '\0';
cout << "result_str = " << result_str << endl;
getchar();
getchar();
return 0;
}

...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bpgkvnym1205 2012-05-27
  • 打赏
  • 举报
回复
result_str[len+1] = '\0';

下标为0开始,len个数,所以最后一个有字符的下标为len-1,则要加空字符,应该该为 result_str[len] = '\0';
北辰天云 2012-05-27
  • 打赏
  • 举报
回复
result_str[len+1] = '\0'; 改为result_str[len] = '\0';试试

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧