gpt4 book ai didi

c - 打印直方图时出现分割错误

转载 作者:行者123 更新时间:2023-11-30 15:55:34 26 4
gpt4 key购买 nike

好吧,所以我想做这个问题:“编写一个程序来打印输入中单词长度的直方图”(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]);
}

最佳答案

for(l=0;l<=15;l++)
{
len[l]=0;
}

您的数组的类型为int [15],因此您正在访问数组外部的元素。

您在此处的 draw 函数中遇到了完全相同的问题:

for(i=1;i<=15;i++)

另外:

char a;
while((a=getchar())!=EOF)

a 类型应为 int 而不是 char。请参阅此说明:

http://c-faq.com/stdio/getcharc.html

关于c - 打印直方图时出现分割错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12026263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com