好的,所以我想做这个问题:“编写一个程序来打印其输入中单词长度的直方图”(Brian 和 dennis ritchie 的《C 编程》一书的练习 1-13)。在这段代码中,我只打印各种字长的计数(作为我的第一次尝试)。
这个程序编译得很好,但是在运行代码时我得到了这个分段错误(代码转储)错误。这段代码有什么问题?
#include<stdio.h>
void read(char input[]);
void draw(int i[]);
main()
{
int i,k,l;
int len[16];
char input[100];
read(input);
i=k=l=0;
for(l=0;l<=15;l++)
{
len[l]=0;
}
while(input[i]!='/0')
{
if(input[i]!='\n'&&input[i]!='\t'&&input[i]!=' ')
{ k++;
i++;
}
else
{ len[k]=len[k]+1;
k=0;
i++;
}
}
draw(len);
return 0;
}
void read(char c[])
{
int i=0;
int a;
while((a=getchar())!=EOF)
{ c[i]=a;
i++;
}
c[i]='\0';
}
void draw(int len[])
{ int i=0;
printf("Length\tWords\n");
for(i=1;i<=15;i++)
printf("%6d\t%6d\n",i,len[i]);
}