【发布时间】:2020-03-04 06:32:10
【问题描述】:
我正在做一个练习,打印来自用户的 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
我搞砸了什么?感谢您的帮助!
编辑进行了建议的更改,但仍然无效
【问题讨论】:
-
C 中的数组基于
0。 IE。第一个元素是userChar[0],最后一个元素是userChar[2]。 -
所以
userChar[3]打破了数组界限,结果可能是任何结果——从错误答案到崩溃。 -
for (i = 0; i < 3; i++)然后userChar[0], userChar[1], userChar[2] -
重新更新:您将数组长度从
char userChar[3];更改为char userChar[2]; -
好吧,我怀疑它......它是从零开始的索引,而不是长度。保留它
3。
标签: c arrays for-loop char scanf