这是我的代码
#include<math.h>
#include<stdio.h>
#include"hw1.h"
int main (int argc, char *argv[]) {
int num_choices, k;
char right_choices[20];
do {
printf("Enter number of choices:\n");
scanf("%d", &num_choices);
}
while ((num_choices > 26) || (num_choices < 1));
num_choices = num_choices - 1 + 'A';
printf("Max choice:%c\n", (char)num_choices);
printf("Enter answer key:\n");
for( k=1; k < 20; k++)
scanf(" %c", &right_choices[20]);
return 0;
}
编译时一切看起来都很好。运行第二个scanf时,应该运行20次,但每次都在19次时停止,它说:“zsh中止”
我试着做了10次,看看这是否是问题所在,但在第9次出现了同样的信息。它总是停在n-1。
同样的代码在linux上运行得很完美。
非常感谢!
我查找了这个问题,但没有找到任何有用的信息
2条答案
按热度按时间ajsxfq5m1#
几乎所有语言中的数组都以相同的方式工作。当你创建
foo[20]
时,这意味着你的数组看起来像[0][1]...[18][19]
。元素
right_choices[20]
不存在,它应该是right_choices[k]
j91ykkif2#
C是0索引语言,请将循环更改为