2014-12-07 3 views
1

3 개의 문자열 배열을 새로운 문자열로 병합하려고합니다. 건은여러 문자열 배열을 하나로 병합

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

당신이 널을 추가 할 필요가 첫번째 장소에가 -terminating character (' '\ 0'') to'AllChar' – bolov

+0

이것은 당신의 질문과는 아무런 관련이 없지만, 이것은 할당을위한 것 같습니다 : 당신의 변수 이름에 철자가 틀린 것입니다. – fenceop

+0

@fenceop 나는 고맙다는 것을 알지 못했다. :) – hodor92

답변

1

당신은 AllChar 배열을 초기화하지 않았다, 그래서 그 요소 하나 하나에 쓰레기가 있습니다. 는 그냥 '\0'

AllChar[j] = 0; // after the last update loop 

과 쓰레기의 마지막 조각을 교체하거나 배열을 초기화 (그것의 모든; C에서 부분적인 초기화 없다)

char AllChar[50] = ""; 
+0

나는 당신의 대답을 투표 할 수 없다. 그러나 진지하게 고마워, 그것은 내 마음을 완전히 미끄러 뜨렸다. – hodor92

+0

아니요, 그것은'char' 유형을 포함하기 때문에 정의 문입니다. '50'은 요소가 아닌 배열의 길이입니다. 'char a [50]; // 초기화되지 않은'...'char b [50] = ""; // 초기화 됨'...'b [49] = 0; // b의 한 원소를 변경한다. – pmg

관련 문제