D.R的C程序设计语言(第二版)问题1-14打印输入中各个字符出现频率的直方图。ACSII十进制值作为ch数组的下标,对应的下标的数组值+1。然后用ch_sub和ch_value数组分别保存用对应的下标和值。编译没错误,运行立即报段错误。自学C的萌新,各位大佬轻喷。
#include <stdio.h>
main()
{
int c,i,j,l;
int ch[128];
int ch_sub[j];
int ch_value[l];
i= j = l =0;
for (i = 0; i < 128; ++i)
ch[i] = 0;
while ((c = getchar()) != EOF)
++ch[c];
for (i = 0; i < 128; ++i){
if (ch[i] > 0){
ch_sub[j] = i;
ch_value[j] = ch[i];
++j;
}
}
for (l = 0; l < j; ++l)
printf("%c\t%d\n",ch_sub[l],ch_value[l]);
}
中的 i 和 j 的值是随机值, 定义数组是未定义的.