标题:读入文件出错怎么回事?
只看楼主
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
 问题点数:0 回复次数:10 
读入文件出错怎么回事?

读入文件出错怎么回事?

程序调试都没出错,可是一运行就弹这个错误,要关闭。不知什么原因啊。就下面这个错误。in.dat在所在文件夹里。难道是in.dat数据格式错误,但是不会啊。
Debug Assertion Failed!
Program:E:\temp\aaaa\Debug\aaa.exe
file:fscanf.c
Line:54
expression:stream!=NULL
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
下面是我的全部代码:

#include <stdio.h>
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;
jsValue()
{int i,k,l,m,n,p=0;
for(i=0;i<300;i++)
{ k=a[i]/1000;
l=a[i]%1000/100;
m=a[i]%100/10;
n=a[i]%10;
if((k+n)==(l+m))
{cnt++;
pjz1+=a[i];
}
else {p++;pjz2+=a[i];}
}
pjz1/=cnt;
pjz2/=p;
}
main()
{
int i;
readDat();
jsValue();
writeDat();
printf("cnt=%d\n满足条件的平均值pzj1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n" ,cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp;
int i;
fp=fopen("in.dat" ," r" );
for( i=0;i<300;i++) fscanf(fp,"%d",&a[i]);
fclose(fp);
}
writeDat()
{
FILE *out;
int i;
out=fopen(" out.dat" ," w" );
fprintf(out," %d\n%7.21f\n%7.21f\n" ,cnt,pjz1,pjz2);
fclose(out);
}

[此贴子已经被作者于2006-7-23 1:50:29编辑过]

搜索更多相关主题的帖子: 入文件 dat Debug Assertion 
2006-07-23 01:45
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-23 06:54
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
得分:0 
数据输入格式就那么几种啊.这应该是哪种啊

2006-07-23 13:53
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-23 15:55
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-23 15:56
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
得分:0 
IN.DAT中存有300个四位数
函数jsValue()求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。
例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件计算平均值pjz2.

2006-07-23 17:16
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-23 17:36
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
得分:0 
以下是引用穆扬在2006-7-23 15:55:38的发言:
你没懂我的意思
我是说
比如
如果你的scanf 用%d
而你的文件中写的是 4,5,6
难道不能说你的数据文件格式有错吗
里面的格式是以空格来作分隔符的,那应该没问题。(是不是"%d ,"就可以用4,5,6来表示。)
我现在在想会不会不是输入文件的格式不对,而是本身代码的问题?

2006-07-23 19:38
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
程序代码好象有问题,你不妨在main这个函数中先声明一下:readDat和writedat

会不会是这个原因,具体还看你机器运行情况!
2006-07-24 08:52
lhyanlh
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-7-11
得分:0 
a

如果上述的代码是你正在运行的,希望你以后注意下空格!
fp=fopen("in.dat" ,"r" );
out=fopen("out.dat" ,"w" );
"r", "w"前不要加空格!文件名out.dat前也不加空格!

2006-07-24 09:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-79771-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.823729 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved