读书人

求教这个代码为什么段异常核心已转存的

发布时间: 2013-06-25 23:45:41 作者: rapoo

求教这个代码为什么段错误核心已转存的问题
大家帮我看看我这个代码为什么会出现段错误核心已转存。指出我的错误,新手。代码要达到的目的是:
打印单词长度的直方图。
先谢谢大家了!

#include<stdio.h>

#define IN1
#define OUT0

main()
{

int count = 0;
int max1 = 0;
int max2 = 0;
int temp;
int c;
int i, j, k, m, n;
int len[i];

temp = OUT;
for (i=0; i<100; i++)
{
len[i] = 0;
}

while ((c=getchar()) != EOF)
{
if (c==' ' || c=='\t' || c=='\n')
{
if (max1 <= (count-1))
{
max1 = (count-1);
}

temp = OUT;
len[count-1] = len[count-1]+1;
count = 0;
}
else if (temp == OUT)
{
temp = IN;
++count;
}
else
{
++count;
}

}

for (j=0; j<=max1; j++)
{
if (max2 <= len[i])
{
max2 = len[i];
}
}

for (; max2>=1; max2--)
{
printf("%d|",max2);
for (k=0; k<=max1; k++)
{
if (len[k] >= max2)
{
printf(" *");
}
else
{
printf(" ");
}
}
printf("\n");

}
printf(" +");
for (m=0; m<=max1; m++)
{
printf(" -");
}

for (n=0; n<=max1; n++)
{
printf(" %d",n);
}
}

[解决办法]
非法读写内存,通常不是指针没有初始化就是数组越界
[解决办法]

#include <stdio.h>

#define IN1
#define OUT0

main()
{
int count = 0;
int max1 = 0;
int max2 = 0;
int temp;
int c;
int i, j, k, m, n;
int len[i];//i还没赋初值。。怎能作为数组的长度。。

temp = OUT;
for (i=0; i<100; i++)
{
len[i] = 0;
}

while ((c=getchar()) != EOF)
{
if (c==' '
[解决办法]
c=='\t'
[解决办法]
c=='\n')
{
if (max1 <= (count-1))
{
max1 = (count-1);
}

temp = OUT;
len[count-1] = len[count-1]+1;
count = 0;
}
else if (temp == OUT)
{
temp = IN;
++count;
}
else
{
++count;
}

}

for (j=0; j<=max1; j++)
{
if (max2 <= len[i])
{
max2 = len[i];


}
}

for (; max2>=1; max2--)
{
printf("%d
[解决办法]
",max2);
for (k=0; k<=max1; k++)
{
if (len[k] >= max2)
{
printf(" *");
}
else
{
printf(" ");
}
}
printf("\n");

}
printf(" +");
for (m=0; m<=max1; m++)
{
printf(" -");
}

for (n=0; n<=max1; n++)
{
printf(" %d",n);
}
}


[解决办法]
i没初始化,len[i]会挂掉

读书人网 >C语言

热点推荐