如何将char数组插入另一个char数组?

时间:2012-12-15 14:35:53

标签: c++ arrays string char

我想将一些文本(char数组)插入另一个char数组中。我用过这个strcpy,但它有时显示(并不总是)奇怪的迹象,看看:

enter image description here

如何摆脱它们?

继承我的代码:

    #include <string>
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <iostream>
using namespace std;

const string currentDateTime() {
    time_t now = time(0);
    struct tm tstruct;
    char buf[80];
    tstruct = *localtime(&now);
    strftime(buf, sizeof(buf), "%X", &tstruct);
    return buf;
}

char *addLogin(char *login, char buf[])
{
    string b(buf);
    string l(login);
    string time = currentDateTime();
    string res = time;
    res += l;
    res += b;
    return const_cast<char*>(res.c_str());
}

int main(int argc, char **argv)
{
    char buf[1024];
    strcpy(buf, " some text");
    char *login = "Brian Brown";
    char *temp = addLogin(login, buf);
    strcpy(buf, temp);
    printf("%s\n", buf);
    return 0;
}

编辑:

const string currentDateTime() {
    time_t now = time(0);
    struct tm tstruct;
    char buf[80];
    tstruct = *localtime(&now);
    strftime(buf, sizeof(buf), "%X", &tstruct);
    string b(buf);
    return b;
}

现在似乎运作良好

1 个答案:

答案 0 :(得分:2)

从函数currentDateTime()返回一个未定义行为的局部变量buf。当您稍后追加字符串(以及此函数返回的字符串)时,这肯定会引发问题。

此外,该函数的签名为const string,但您返回char*