我正在做一个学校的C项目。在项目中,我在char holdReference [48]中保留了48个字符,每8个字符必须组成1个字符串。因此,例如:

holdReference[0] = '0';
holdReference[1] = '0';
holdReference[2] = '0';
holdReference[3] = '0';
holdReference[4] = '1';
holdReference[5] = '2';
holdReference[6] = 'd';
holdReference[7] = '8';
....


由8个字符组成的结果字符串保存在char HexReference [6] [9]中,这意味着HexReference包含6个长度为8位的字符串。

这是我的代码:

char HexReference[6][9];


int hx = 0;
int indexxx;
int hex = -1;

while(hx<charNumber)
{
    if(hx%8 == 0)
    {
        indexxx = 0;
        hex++;
        HexReference[hex][indexxx] = holdReference[hx];
        indexxx++;
    }
    else
    {

        HexReference[hex][indexxx] = holdReference[hx];
        indexxx++;
    }

    hx++;
}
printf("%s" , HexReference[0]); --> prints 000012d8/000017f3


问题是,即使HexReference [0]必须保留000012d8,也将在控制台上打印000012d8 / 000017f3。 000017f3必须保留在HexReference [1]中。

如果您能尽快帮助我,我将非常感谢。

最佳答案

您忘记在每个字符串的末尾为空终止符“ \ 0”分配足够的空间。
另外,由于要一一放置字符,因此还需要手动添加null终止符。

10-06 14:29