当前位置: 代码迷 >> C语言 >> [求助] 紧急问题 求救 SOS
  详细解决方案

[求助] 紧急问题 求救 SOS

热度:481   发布时间:2005-05-13 16:34:00.0
[求助] 紧急问题 求救 SOS
现在有个程序:接收10个实数,并且存为123.txt 文件
#include <stdio.h>
#include <stdlib.h>
void save(int n);
void save(int n)
{
int i;
FILE *fp;
float num;
if((fp=fopen("123.txt","w"))==NULL)
{
  printf("can not open the file!\n");
  exit(1);
}
printf("please enter n numbers:\n");
for(i=0;i<n;i++)
{
  printf("please enter th%d num:\t",i+1);
  scanf("%f",&num);
  fprintf(fp,"%f\n", num);
}
fclose(fp);
}
int main()
{
int n;
printf("please enter the n:\t");
scanf("%d",&n);
save(n);
}
运行后生成123.txt文件,里面的数据如下:(比如)
1.220000
2.110000
3.330000
4.440000
5.550000
6.660000
7.770000
8.880000
9.989998
9.977699
现在我再重新运行另外一个程序,就是一个读取这个文件里数据的程序,并且要求把这些数据存入到一个一维数组中,程序如下(有问题)运行后并不能把数据存到数组里,为了验证是否存入数组,我把下面的程序写为 存入后,把这些数相加。可是结果=0.000000
#include<stdlib.h>
#include<stdio.h>
void load()  
{
float num;
float sum;
float date[10];
int i=0;
FILE *fp;
sum=0;
if((fp=fopen("123.txt","r"))==NULL)
{
  printf("can not enter this file!\n");
  exit(1);
}
while(fscanf(fp,"%f",&num)!=EOF)
{
  date[i]=num;
  i=i+1;
}
fclose(fp);
}
main()
{
int i;
float p=0;
float date[10];
load();
for(i=0;i<10;i++)
{p=p+date[i];}
printf("%f\n",&p);
}

希望各位能指出错误之处,紧急问题啊,急待解决!
搜索更多相关的解决方案: SOS  

----------------解决方案--------------------------------------------------------

#include<stdlib.h> #include<stdio.h> void load() { float num; float sum; float date[10]; int i=0; FILE *fp; sum=0; if((fp=fopen("123.txt","r"))==NULL) { printf("can not enter this file!\n"); exit(1); } while(fscanf(fp,"%f",&num)!=EOF) { date[i]=num; i=i+1; printf(" %f ",num); <--所有的auto变量只在函数存在期有效 } fclose(fp); } main() { int i; float p=0; float date[10]; load(); /*for(i=0;i<10;i++) {p=p+date[i];} printf("%f\n",&p); //这个也不对*/ }

注意变量的作用域


----------------解决方案--------------------------------------------------------
1.没有load()的原型;
2.date[10],在main()和load()中分别声明了一次.

[此贴子已经被作者于2005-5-13 17:05:36编辑过]



----------------解决方案--------------------------------------------------------
各位版主  帮忙改哈吧, 急啊~!  谢谢!
----------------解决方案--------------------------------------------------------

//我帮你改了下 //看看把 ///现在有个程序:接收10个实数,并且存为123.txt 文件

/*#include <stdio.h> #include <stdlib.h> void save(int n); void save(int n) { int i; FILE *fp; float num; if((fp=fopen("123.txt","w"))==NULL) { printf("can not open the file!\n"); exit(1); } printf("please enter n numbers:\n"); for(i=0;i<n;i++) { printf("please enter th%d num:\t",i+1); scanf("%f",&num); fprintf(fp,"%f\n", num); } fclose(fp); } int main() { int n; printf("please enter the n:\t"); scanf("%d",&n); save(n); } */ /* 运行后生成123.txt文件,里面的数据如下:(比如) 1.220000 2.110000 3.330000 4.440000 5.550000 6.660000 7.770000 8.880000 9.989998 9.977699 */

//现在我再重新运行另外一个程序,就是一个读取这个文件里数据的程序, //并且要求把这些数据存入到一个一维数组中,程序如下(有问题) //运行后并不能把数据存到数组里,为了验证是否存入数组,我把下面的程序写为 存入后, //把这些数相加。可是结果=0.000000 #include<stdlib.h> #include<stdio.h> float date[10]; void load() { float num; float sum; int i=0; FILE *fp; sum=0; if((fp=fopen("123.txt","r"))==NULL) { printf("can not enter this file!\n"); exit(1); } while(fscanf(fp,"%f",&num)!=EOF) { date[i]=num; i=i+1; } fclose(fp); } main() { int i; float p=0;

load(); for(i=0;i<10;i++) { p=p+date[i]; } printf("%f\n",p); }


----------------解决方案--------------------------------------------------------
对这个论坛的送分不熟悉, 以为我送的25分是每个人给25分,结果一次全给了版主了, 你们2位就没了 实在抱歉 呵呵


2楼和3楼的 对我还有点启发, 4楼的朋友谢谢你咯, 帮了很大忙!
----------------解决方案--------------------------------------------------------
  相关解决方案