求强人帮看下代码怎么错了?在线等.

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:46:03
源代码如下,在VS.NET2003下调试每次都通不过,判断出来FP1读到的都是NULL,有没人看看是怎么回事啊?

#include <stdio.h>
#include <stdlib.h>

void main()
{
double data1[5000];
double data2[5000];
double p= 0.0;
double temp;
int i = 0;
FILE *fp1;

if((fp1=fopen("1.txt","r")) == NULL)
{
printf("error!");

}

while(!feof(fp1)){
fscanf(fp1,"%f ",data1[i]);
i++;
}
fclose(fp1);

FILE *fp2;
i = 0;
fp2 = fopen("2.txt","r");

while(!feof(fp2)){
fscanf(fp2,"%f ",data2[i]);
i++;
}

for(int j = 0; j < i;j++){
temp = (data2[j+1] - data2[j]) / (data1[j+1] - data1[j]);
p = (p * (j) + temp )/ (j+1);
}

FILE *fp3;
char *s;
scanf("%s",&s);
fp3 = fopen ( s ,"w");
fprintf(fp3

[回答]:1.txt 放在什么地方了?

1.txt 必须放在你的可执行文件同样的地方。
或者你把绝对路径写上,如:
if((fp1=fopen("D:\\1.txt","r"))==NULL)

这个没有问题的话,
在继续找错。

补充1:
另外在这个if判断里面
if((fp1=fopen("1.txt","r")) == NULL)
{
printf("error!");
rerurn;//添加
}
应该加上return,
否则即使文件读出来后是NULL,
也会继续后面的操作,
这样很危险。

补充2:
试一下绝对路径:像我上面写得那样。

补充3:
可执行文件夹是指的bin文件夹里面。
你是这样放的吗?

悉雨辰寂

fp1=NULL表明了1.txt没有找到。
文件不写全部路径的话必须放在你的可执行文件同样的地方,你写全部路径看看吧。

fscanf(fp1,"%f ",data1[i]);
data1[i]前面加&