C语言:如何将数据写入文件

下面是我编的一个程序,运行出来应该有100行数据(每行5个),可是当存入txt时由于main函数的for循环使得每次得出的五个数据把前一行的数据覆盖了,最后Data中输出的数据只有一行,哪位高手来帮帮忙修改修改啊,小弟在此先谢谢大家了!
#include<stdio.h>
#include<math.h>
float i,j,T,GTi,GAl,xAla,xAlb,oTiAla,oTiAlb,Gma,Gmb,R=8.314;
void WriteDat()
{
FILE *Data;
Data=fopen("Data.txt","w");
printf("%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
fprintf(Data,"%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
fclose(Data);
}
void main()
{
printf("Please input a number that between 0 and 3000:\n");
scanf("%f",&i);
T=273+900+i*0.1;
GTi=5758.548+38.38941*T-7.4305*T*log(T)+9.36357*0.001*T*T-1.048055*0.000001*T*T*T-525090/T;
GAl=4602-3.013*T;
for(j=1;j<=100;j++)
{
xAla=0.001*j;
xAlb=xAla;
oTiAla=(-123788.5+33.20902*T)+(16034.9-12.18272*T)*(2*xAla-1);
oTiAlb=(-117572.6+32.45153*T)+(4835.982-1.410195*T)*(2*xAlb-1);
Gma=R*T*((1-xAla)*log(1-xAla)+xAla*log(xAla))+oTiAla*xAla*(1-xAla);
Gmb=(1-xAlb)*GTi+xAlb*GAl+R*T*((1-xAlb)*log(1-xAlb)+xAlb*log(xAlb))+oTiAlb*xAlb*(1-xAlb);
WriteDat();
printf("%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
}
}

原因:
使用fopen时参数不正确,你是用 w参数,若文件存在则文件长度清为0,即该文件内容会消失。每次都是重新清空并写数据, 将w修改为a即可.
fopen函数说明见下方:
---------------
FILE * fopen(const char * path,const char * mode);
[编辑本段]函数说明
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言中,如何把数组里的数据写入文件
使用for循环语句+文件操作函数即可把数组里的数据写入文件。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell...

c语言怎么将数据写入文件?
首先打开VC++6.0。选择文件,新建。选择C++ source file 新建一个空白文档。先声明头文件#include <stdio.h>。写上主函数 void main 主要代码 FILE *infile,*outfile,*otherfile;char input;char inputs[10];int i=0;infile = fopen("d:\\\\infile.txt","r+");\/\/用fopen函数打开文件 outfile...

C语言中,如何把数组里的数据写入文件
回答:buffer 指针,指向将要被写入的数据 size 项的大小,以字节为单位 count 项的数目 stream 文件指针 比如 将100个 int 数组写入 C:\\data.datFILE *pF;int data[100]; \/\/数组初始化代码省略

c语言如何创建文件并将结构体数据存进去
c语言如何创建文件并将结构体数据存进去?需要使用文件操作函数fwrite和fread。 读物文件并写入结构体,同时保存文件的代码如下:1、写 FILE* fp = fopen("card.dat

c语言中怎么把一个结构体数组写入文件
C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件 2、调用写入函数fwrite()将结构体数据写入文件 3、关闭文件指针 相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件 2、调用读文件函数fread()读取文件中的数据到结构体变量 3、关闭文件指针 参考代码如下:include<...

C语言如何写入文本文件
1、首先输入下方的代码 include <stdio.h> int main(){ \/\/下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w");if(fpWrite==NULL){ return 0;} for(int i=0;i<10;i++)fprintf(fpWrite,"%d ",i);fclose(fpWrite);\/\/下面是读数据,将读到的数据...

C语言中如何将一个数组导入到文件中?
1 将数组以二进制方式写入文件。如 fwrite(a, sizeof(a), 1, fp);可以将数组整体以二进制方式写入文件中。2 按照元素,依次写入文件。具体写入格式与数组的类型有关。如为int数组可以写作:int i;for(i = 0; i < N; i++)fprintf("%d,", a[i]);两种方法各有优缺点:1 代码量上,第...

用C语言如何将内存中从某一地址开始的数据写入文件?
简单实现过程 char *buffer; \/\/定义个缓冲区,pt=指向开始地址 memcpy(buffer,pt,X); \/\/X里是每次读取的大小,小可以一次读入!不要比buffer大就ok File fp;\/\/写文件 fOpen();\/\/里面省了 fwirte(buffer,sizeof(char),X,fp);pt+=X;\/\/指针后移...然后循环读取,写入!判断什么时候完!呵呵!

C语言\/c++如何把数输入到txt文件中去
C语言将数输入到文件中:首先,定义一个文件指针:FILE *fp;和一个数组:int a[5];然后,打开文件:fp = fopen ("filename.txt", "w"); \/\/"w"是打开文件方式,将原有内容清空写入新数据,如果文件不存在则新建,类似的还有"r"只读打开(不能写入);"a"向文件中追加内容,原有内容不变,等等 最...

怎么把c语言编的程序的结果输入到一个文本文件中?
c语言编的程序的结果输入到一个文本文件中可以使用fprintf;例:include<stdio.h> main(){ FILE *fpt;fpt = fopen("wendangming.txt","w");\/\/打开文档,写入 fprintf(fpt,"Hello world");fclose(fpt);}

相似回答