0
#include <stdio.h>
#define IN 1
#define OUT 0
#define maxword 15

main()
{
int j,i,state,c,nc_word;
nc_word = 0;
int count [maxword];
for(i=0;i<=maxword;i++)
    count[i]=0;
state = OUT;

while((c=getchar())!= EOF)
{
    if( c == ' '|| c == '\t'||c == '\n')
    {
       if (state == IN){
        ++count[nc_word];
        nc_word = 0;
       }
       state = OUT;

    }
    else
    {
        state = IN;
        ++nc_word;
    }
 }
for(i=13 ; i>=1 ; --i)
 {
    printf("\n%d",i);
   for(j=1;j<=count[i];j++){
        printf(" *");
   }
 }
 }

该程序打印单词中字符数的直方图。但它将数组 count[] 的最后一个元素设置为 -1(在我的情况下,-1 是 EOF 值)。例如,如果输入中有一个 14 字符的单词,count[14] 应该为 1,但它不起作用.. 它总是设置为 -1。为什么会这样?

4

2 回答 2

2

它应该<代替<=in for(i=0;i<=maxword;i++)。您正在尝试访问不属于您的阵列的内存空间。

于 2013-11-08T13:52:19.050 回答
1

检查一次索引,它正在打印垃圾值。先生,您的这句话在什么空间存在?我不明白

++count[nc_word];
于 2013-11-08T13:51:16.010 回答