中易网

C语言文本文件的读写

答案:3  悬赏:80  
解决时间 2021-02-21 19:35
如下数据保存在文件infile.dat中.我想把它读出来,存到结构体数组中
stuct pro
{float msl;
float la,lo;
double refractivity,density,pressure;
float temp;
}atm[200];
然后把数据写到out.txt中.
请问高手,具体该怎么做呢?如果可以的话,希望能有一个完整的C程序.如果能发到我的邮箱就更好了. EMAIL:[email protected]

还有点小问题,美中不足.
1.如果要自己控制换行,比如图片中有7列数据,我只想要前四列,如何让它在读完四个数之后自动换行读下一行的数?
2.这样的文件有N个,且文件名没有规律.如何利用文件名做索引,将它们都用这个程序处理了?
3.每个文件中的数据行数不确定,是否要用到链表处理呢?
如果您觉得问题太多了,只回答3和4或者只回答3也可以,先谢谢诸位了!



最佳答案
//---------------------------------------------------------------------------

#include
struct pro
{float msl;
float la,lo;
double refractivity,density,pressure;
float temp;
}atm[200];

int main(void)
{
FILE *fp=fopen("infile.dat","r"),*fp2=NULL;
int i;
if (!fp||(fp2=fopen("out.txt","w"))==NULL) {
fprintf(stderr,"FILE ERROR");
return -1;
}
for (i = 0; i<200; i++) {

fscanf(fp,"%f%f%f%lf%lf%lf%f",&atm[i].msl,&atm[i].la,&atm[i].lo,&atm[i].refractivity,&atm[i].density,&atm[i].pressure,&atm[i].temp);

fprintf(fp,"%f\t%f\t%f\t%lf\t%lf\t%lf\t%f\n",atm[i].msl,atm[i].la,atm[i].lo,atm[i].refractivity,atm[i].density,atm[i].pressure,atm[i].temp);
}
fclose(fp);
fclose(fp2);
return 0;
}
//---------------------------------------------------------------------------
全部回答
infile.dat 里的数据是用什么格式存储的? 我的意思是,其中数据的存储顺序....
1、c语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。 2、例程: #include int a; char b,c[100]; int main(){     file * fp1 = fopen("input.txt", "r");//打开输入文件     file * fp2 = fopen("output.txt", "w");//打开输出文件     if (fp1==null || fp2==null) {//若打开文件失败则退出         puts("不能打开文件!");         rturn 0;     }     fscanf(fp1,"%d",&a);//从输入文件读取一个整数     b=fgetc(fp1);//从输入文件读取一个字符     fgets(c,100,fp1);//从输入文件读取一行字符串     printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数     fputs(c,fp2);//向输出文件写入一行字符串     fputc(b,fp2);//向输出文件写入一个字符     fprintf(fp2,"%d",a);//向输出文件写入一个整数     fclose(fp1);//关闭输入文件     fclose(fp2);//关闭输出文件,相当于保存     return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
古方丰润茶用后的评论,用了古法丰润茶30天没
佳家政服务中心地址有知道的么?有点事想过去
如果把风筝比作火车,绳子就是什么
诚实,同意,认真,兴高采烈的近又词和反义词
温州商会地址在哪,我要去那里办事
这山真高啊,补充句子
福旗源汤包电子正街店怎么去啊,有知道地址的
吃药丸有简单方法吗
炸酱面的酱要怎么做呢?
同创教育地址在哪,我要去那里办事
营改增劳务派遣差额征税怎么开票
三年级共10O人,爱好 语文82人,爱好数学70人
core里面怎样裁剪图片
昆山商厦家电生活广场东门地址在什么地方,想
石膏板又叫什么板
推荐资讯
现在的PS2应该买什麽版本的?都是7700X的,还
我的成绩是3B1C1D可不可以进株洲市三中??
高县金城大药房可久店在什么地方啊,我要过去
求台词:电影《迫在眉梢》中父亲在儿子病床前
摩托车点火器被雨淋湿发不起来了怎么办
“分手信”为什么叫“Dear John letter”
`交通事故致一人死亡吊消驾照法院判缓一吗
刀剑神域2什么时候上映啊!
谷歌浏览器 每次鼠标放到图片上就出现什么分
限速60我跑65.超速了10%吗?需要扣分吗?
5800怎么把角度换算弧度
2018年考在职研究生有用吗?在职研究生考了有
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?