strcpy复制另一个数组的内容

时间:2015-05-12 10:48:38

标签: c++ arrays string char

所以我有这段代码将char数组转换为struct的内容。 (不,我不会争论这是否是正确/最有效的方式)

void chararray_to_categorie(categorie &levarr, char** chararray)
    {


        string temp = chararray[0];
        int length = temp.length();
        temp = temp.substr(0, ((length<21)?length:20));

        strcpy(levarr.naam, temp.c_str()); //a very sloppy way to use substring on a char array. Tried memcpy and that caused the same results which is why I'm trying it this way.
        levarr.naam[20] = '\0';

        strcpy(levarr.omschrijving, chararray[1]);


        cout << endl << chararray[0] << endl << temp << endl << levarr.naam << endl << length << endl << ((length<21) ? length : 20);
        _getch();

        /*
        input:
        naam: 1234567890123456789012345678901234567890
        omschrijving: lol

        output:
        chararray[0]: 1234567890123456789012345678901234567890
        temp: 12345678901234567890
        levarr.naam: 12345678901234567890lol

        */

    }

正如你在输出中看到的那样,你可以看到结构的内容有2个字符组合,这就是我的问题。

1 个答案:

答案 0 :(得分:1)

您的代码中有很多不太理想的东西,但错误归结为:

levarr.naam[20] = '\0';

应该是

levarr.naam[19] = '\0';

因为数组从0开始计算;

其他需要解决的问题:

  • 使用一个保存strcpy函数,该函数以NULL结尾字符串并具有大小参数,它可以防止您解决此问题。
  • 不要获取子字符串,只使用安全函数从原始字符串中复制那么多字符。