C语言数组编译通过运行时报段错误?

0 0 linux C
疯狂Clark
疯狂Clark

声望值:116 0人

2019-02-18 14:14:44 提问

关注 0关注

收藏 0收藏, 146浏览

D.R的C程序设计语言(第二版)问题1-14打印输入中各个字符出现频率的直方图。ACSII十进制值作为ch数组的下标,对应的下标的数组值+1。然后用ch_sub和ch_value数组分别保存用对应的下标和值。编译没错误,运行立即报段错误。自学C的萌新,各位大佬轻喷。

#include 

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	%d
",ch_sub[l],ch_value[l]);
}

clipboard.png

请先 登录 后评论

1个回答

  • Sily°苏暖年222声望 2018-09-25 09:26

    int ch_sub[j]; int ch_value[l]; 中的 i 和 j 的值是随机值, 定义数组是未定义的.
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问