【问题标题】:Concatenate cstrings c++连接 cstrings c++
【发布时间】:2013-03-05 09:02:32
【问题描述】:

当我运行它时,我没有收到任何错误,但字符串没有连接起来。有人可以告诉我这里哪里出错了。

char *con(const char str[], int n) {
    char * t = new char[60];
    int l = strlen(str);
    t[l] = '\0';
    if (n <= 0) {
        return t;
    } else {
        for (int i = 0; i < n; i++) {
            strcat(t, str);
        }
        return t;
    }
}

如果我尝试取出:

int l = strlen(str);
t[l] = '\0';

然后程序崩溃了。

【问题讨论】:

  • 发明std::string是有原因的。
  • 什么是s?我没有看到它在任何地方定义。它是空终止的吗?
  • 抱歉修复了 s,忘记了 tr
  • 真的,帮自己一个忙,要么 1) 将 C++ 标签替换为 C 标签,要么 2) 使用 std::string 并享受编写 C++ 的乐趣
  • n 参数指定了什么?

标签: c++ concatenation cstring


【解决方案1】:

你必须从一个空字符串开始。

替换:

int l = strlen(str);
t[l] = '\0';

与:

t[0] = '\0';

现在str 将在t 中连接n 次。

原始代码未初始化 t 中的第一个 l-1 字符。

【讨论】:

  • 嗯,没有修复它,如果我调用 ("hi",5),程序什么也不返回
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
相关资源
最近更新 更多