所以我有这段代码将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个字符组合,这就是我的问题。
答案 0 :(得分:1)
您的代码中有很多不太理想的东西,但错误归结为:
levarr.naam[20] = '\0';
应该是
levarr.naam[19] = '\0';
因为数组从0开始计算;
其他需要解决的问题:
strcpy
函数,该函数以NULL结尾字符串并具有大小参数,它可以防止您解决此问题。