Запись двух массивов символов в другой массив символов не работает - PullRequest
1 голос
/ 14 декабря 2011

Вывод: «Привет»
Почему вывод не "Hello World"? **

#include <stdio.h>

int main ()
{
    char x[] = "Hello", y[]="World",  xy[50];
    int i, j;
    for(i=0; x[i] != '\0'; i++) {
        xy[i] = x[i];
    }
    i++;
    xy[i] = ' ';
    for(j=0; y[j] != '\0'; j++) {
            i++;
        xy[i] = y[j];
    }
    printf("%s", xy);
    return 0;
}

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

Одна проблема прямо здесь:

    i++;
    xy[i] = ' ';

Вы пропускаете один символ xy, оставляя его неинициализированным.

Чтобы исправить, удалите i++:

    xy[i] = ' ';

Другая проблема заключается в том, что вы не добавляете символ NUL в самом конце.

1 голос
/ 14 декабря 2011

Это потому, что вы увеличиваете i перед установкой xy[i] = ' '. Это оставляет xy[i] установленным на потенциально неправильное значение. Вместо этого используйте xy[i++] = ' '; и, в общем, обратите внимание на порядок ваших приращений: в вашей программе есть больше мест, где вы ошиблись:)

0 голосов
/ 14 декабря 2011

Вы пробовали пошагово пройти по коду? Если нет, попробуйте. Вы поймете, что оставили случайный символ в xy, когда сделали

      i++; //line 10

в строке 10. В хорошие дни это будет нулевой символ. Так что вы просто видите ноль. В плохие дни это может быть любой странный символ, так что вы можете даже получить Hello! World

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...