数组“ 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])来避免这种情况。

07-24 13:48