【发布时间】:2013-12-26 20:50:30
【问题描述】:
我正在做一个C 编程学校项目。在项目的一部分中,我需要加入每 8 个字符串(每个 4 个字符的长度)以形成 1 个字符串(每个 32 个字符的长度)。
例如,char *holdBinary[16] 包含 16 个字符串,例如:
holdBinary[0] = "0000";
holdBinary[1] = "0000";
holdBinary[2] = "0000";
holdBinary[3] = "0000";
holdBinary[4] = "0000";
holdBinary[5] = "0000";
holdBinary[6] = "0000";
holdBinary[7] = "0000";
holdBinary[8] = "0000";
holdBinary[9] = "0000";
holdBinary[10] = "0010";
holdBinary[11] = "1010";
holdBinary[12] = "0000";
holdBinary[13] = "0000";
holdBinary[14] = "0000";
holdBinary[15] = "0000";
我需要加入 holdBinary 中的每 8 个字符串以形成 1 个字符串,该字符串保存在 holdRange 字符数组中。因此,结果为:holdeRange[0] = "00000000000000000000000000000000",由holdBinary[0]、holdBinary[1] ....holdBinary[7] 和holdeRange[1] = "00000000001010100000000000000000" 组成。
代码如下:
char holdRange[2][33]; // I changed here and it works correct now
int hold = 0;
int z = 0;
int index2 = -1;
while(z<16)
{
if(z%8 == 0)
{
index2++;
strcpy(holdRange[index2] , holdBinary[z]);
}
else
{
strcat(holdRange[index2] , holdBinary[z]);
}
z++;
}
printf("%s" , holdRange[0]); --> prints 0000000000000000000000000000000000000000001010100000000000000000
printf("\n");
printf("%s" , holdRange[1]); --> prints 00000000001010100000000000000000
因此,holdRange[0] 不等于必须的。我该如何解决?
【问题讨论】:
-
char holdRange[32];还是我错过了什么? -
holdRange 应该包含 6 个长度为 32 的字符串。numberOfChar/8 说明了这一点。
-
@ElliottFrisch:缺少尾随 NULL?
char holdRange[33]; -
“请帮帮我,时间有限” - 哦不!世界会终结吗?
-
我不明白你想说什么。正如我所提到的,holdRange 数组应该被定义为容纳 6 个字符串,每个字符串的长度为 32。