gpt4 book ai didi

c - 将多个字符串数组合并为一个

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:35 26 4
gpt4 key购买 nike

我正在尝试将三个字符串数组合并为一个新数组。

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;
}

最佳答案

您没有初始化 AllChar 数组,因此它的每个元素中都有垃圾。把最后一 block 垃圾换成一个'\0'

就可以了
AllChar[j] = 0; // after the last update loop

或者首先初始化数组(全部;C 中没有部分初始化)

char AllChar[50] = "";

关于c - 将多个字符串数组合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com