Дополнительный символ всякий раз, когда я печатаю на выходе - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь выполнить программу FLAMES как задание, и, поскольку я не могу точно разместить здесь весь свой код, я буду вводить ту часть кода, которая, кажется, вызывает у меня ошибки, поскольку всякий раз, когда я что-то распечатываю,при выводе появляются неожиданные дополнительные символы.

Я использовал код, подобный этому:

int main(){
    char chari[100], temp[100];
    int i, c;

    printf("Enter a name: \n");
    scanf(" %[^\n]s", chari);

    for (i=1; chari[i]!='\0'; i++)
    {
        printf("%i\n", i);
    }

    c = i;

    for (i=0; i<c; i++)
    {
        printf("%i < %i\n", i, c);
        temp[i] = chari[i];
    }

    printf("%s \n", temp);

    return 0;

}

Я часами настраивал коды, но все еще не могукажется, найти проблему.Я также подсчитываю количество букв в строке, чтобы потом можно было остановить некоторую часть моей программы.

Ввод: круто

Ожидаемый вывод: круто

Фактический выход: круто (<- t </strong>

1 Ответ

0 голосов
/ 30 января 2019

Вы забыли скопировать завершающий нулевой символ.

После того, как ваш первый цикл c = i; содержит индекс байта 0.Во втором цикле вы выполняете до i < c, т. Е. Вы не копируете этот 0 байт. Не завершая nul, ваша строка до тех пор, пока в памяти находится другой случайный 0 байт.

Внутри функции только статические переменныеинициализируется.Следовательно, ваш массив temp содержит неопределенные значения, и вы не можете рассчитывать на получение символа 0 там, где он вам нужен.

Вам необходимо скопировать еще 1 байт.

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