为什么数组的最后一个元素会自动设置为“-1”?

时间:2013-11-08 13:32:54

标签: c arrays histogram

#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。为什么会发生?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

  

检查一次索引,它打印垃圾值。   在先生的哪个空间,你的这个陈述存在吗?我不明白

++count[nc_word];