我想将三个字符串数组合并成一个新数组。将多个字符串数组合并成一个
OUTPUT
ARRAY1 = towers
ARRAY2 = films
ARRAY3 = high
array is: towersfilmshighw
的事情是,这三个阵列成功合并成一个新的数组,但也有额外的和随机的字符添加 - 在这种情况下,一个w
。我不允许使用指针合并数组。
任何人都可以解释为什么多余的字符在那里? 因为在此之后,我需要删除重复的字符,它不工作。
这里是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char array1[10], array2[10], array3[10], AllChar[50];
int lenghtOfArray1, lenghtOfArray2, lenghtOfArray3, i = 0, j = 0, k = 0, z = 0;
printf("Array 1");
gets(array1);
printf("Array 2");
gets(array2);
printf("Array 3");
gets(array3);
lenghtOfArray1 = strlen(array1);
lenghtOfArray2 = strlen(array2);
lenghtOfArray3 = strlen(array3);
if (!(lenghtOfArray1 <= 8 && lenghtOfArray2 <= 8 && lenghtOfArray3 <= 8)) {
printf("The length of all words must bigger than or equal to eight\n");
} else {
while (j < lenghtOfArray1) {
AllChar[j] = array1[i];
i++;
j++;
}
while (j < (lenghtOfArray2 + lenghtOfArray1)) {
AllChar[j] = array2[k];
k++;
j++;
}
while (j < (lenghtOfArray1 + lenghtOfArray2 + lenghtOfArray3)) {
AllChar[j] = array3[z];
z++;
j++;
}
printf("array is :");
for (i = 0; i < (lenghtOfArray1 + lenghtOfArray2 + lenghtOfArray3); i++) {
puts(&AllChar[i]);
printf("\n");
}
}
return 0;
}
你需要添加一个空 - 终止字符(''\ 0'')到'AllChar' – bolov 2014-12-07 18:08:37
这与你的问题没有关系,但是因为这似乎是一个赋值:你在变量名中拼写'length'。 – fenceop 2014-12-07 18:16:05
@fenceop我没有注意到,谢谢:) – hodor92 2014-12-07 18:30:05