数组“ ones”的大小为10,每个数组最多可以包含5个字符。输出ones [3]的结果为“三四”,最大字符数可以为5,而ones [3]中的“三”的大小为5。为什么它为ones [3]打印“三四”?
代码是:
#include<stdio.h>
#include<string.h>
int main(){
char input[8];
printf("Enter the integer: ");
scanf("%c",input);
char ones[10][5]={"zero","one","two","three","four","five","six","seven","eight","nine"};
printf("%d\n",input[0]-'0');
puts(ones[3]);
return 0;
}
输出:
输入整数:3
3
三四
最佳答案
您通过使puts()
访问超出范围来调用未定义的行为。 ones
的每个元素只有5个元素,因此,当您尝试在其中存储"three"
时,将没有空间存储终止的空字符。分配一个以上的元素(即使用ones[10][6]
)来避免这种情况。