头文字d拼说明书:南开一百题编程老是会这样!!!??

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/08 12:29:08
我运行南开里的程序,输入都正确了
为什么看显示结果时会出现
Null pointer assignment
我已经输了两题了,都是这样。为什么呀,哪里设置错了
这个就是程序了

#include<stdio.h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void jsVal()
{ int i,j,qw,bw,sw,gw;
for(i=0;i<MAX;i++)
{qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;
if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0)b[cnt++]=a[i];
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)if(b[i]<b[j])
{qw=b[i];
b[i]=b[j];
b[j]=qw;}
}
void readDat()
{
int i;
FILE*fp;
fp=fopen("in.dat","r");
for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);
fclose(fp);
}
void main()
{ int i;
readDat();
jsVal();
printf("man zhu tiao jian shu=%d\n",cnt);
for(i=0;i<cnt;i++)printf("%d",b[i]);
printf("\n");
writeDat();
}
writeDat()
{
FILE*fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n",cnt);
for(i=0;i<cnt;i++)fprintf(fp,"%dn",b[i]);
fclose(fp);
}

在使用指针前先应该为其分配空间,否则就会出现这个错误。早先有些做为C语言参考资料的书也犯过这类错误。你在定义指针(假设是p)之后一定用p=(数据类型)malloc(sizeof(数据类型)*欲分配的个数);来为指针分配空间,否则你的数据可能会因为写到一个不该写和位置造成系统崩溃。
比如要分配一个10个int 的空间,要p=(int)malloc(sizeof(int)*10);否则一定会出现那个错误。而且,用完之后用free(p);释放,并p=NULL;

看看程序就知道是那错了

显然是指针的问题。把程序贴出来,我帮你看看