c - 由于某种原因最后一个字母是输入+1

标签 c arrays for-loop char scanf

我正在做一个练习,打印从用户处获取的 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

最佳答案

我将将此作为答案发布,只是为了澄清修正案

#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

关于c - 由于某种原因最后一个字母是输入+1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752769/

相关文章:

r - 积分函数中多个参数对应的多个数组的所有可能组合

c# - 将字符串从 c dll 返回到 c#

java - 合并排序比较?

c - 如何从 C 中的 txt 文件创建 char[][]?

ios - Swift 自定义 UITableView 未在构建中显示

C++ For循环项目

python - AsyncGenerator 上的异步 for 循环

c - 当使用数组作为参数时,如何在C中获取该数组参数的长度

c++ - 在 Mac mountain lion 上运行开放式 CV 人脸检测的问题

c - 具有包含可变大小对象的结构的 Malloc