#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。为什么会发生?
答案 0 :(得分:2)
<
中应该是<=
而不是for(i=0;i<=maxword;i++)
。
您正在尝试访问不属于您的阵列的内存空间。
答案 1 :(得分:1)
检查一次索引,它打印垃圾值。 在先生的哪个空间,你的这个陈述存在吗?我不明白
++count[nc_word];