Последняя буква вводится +1 по какой-то причине - PullRequest
0 голосов
/ 07 ноября 2019

Я делаю упражнение, чтобы напечатать 3 письма, взятые от пользователя. Первые две буквы заканчиваются хорошо, но последняя всегда является буквой, которая идет после того, что пользователь вводит по какой-то причине (я пробовал несколько разных комбинаций входов, и это всегда один и тот же результат):

#include <stdio.h>

int main(){

    char userChar[3];
    int i;

    for (i = 1; i <= 3; i++){
        printf("Enter letter %d\n", i);
        scanf(" %c", &userChar[i]);
    }

    printf("%c %c %c", userChar[1], userChar[2], userChar[3]);

    return 0;
}

Вход: abc. Выход: abd

Что я облажался? Спасибо за вашу помощь!

Редактировать внесены рекомендуемые изменения, но все еще не работает

enter image description here

enter image description here

1 Ответ

1 голос
/ 07 ноября 2019

Я опубликую это как ответ только для уточнения поправок

#include <stdio.h>

int main(){

    char userChar[3];
    int i;

    for (i = 0; i < 3; i++){                                    // the loop range
        printf("Enter letter %d\n", i + 1);                     // for human use
        scanf(" %c", &userChar[i]);
    }
    printf("%c %c %c", userChar[0], userChar[1], userChar[2]);  // the array indexing

    return 0;
}

Программа сеанса

Enter letter 1
a
Enter letter 2
b
Enter letter 3
c
a b c
...