| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:[求助]一个文件的问题
只看楼主 加入收藏
wtm
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-18
收藏
 问题点数:0 回复次数:1 
[求助]一个文件的问题

请教(急)

题目:设有一个单位的人员工资有如下信息:name、department、 base pay、allowance、total 。现从键盘输入一组人员工资数据并将它们存储到名为paydata的文件中; 再从paydata取出工资数据并给每个人的base pay增加100元,增加后将工资数据显示于屏幕(每行1人)。 请编写能够完成上述工作的程序。

我的解决方案:

/*experiment-2*/ #include<stdio.h> main() {struct people {char name[3]; char department[3]; float basepay; float allowance; float totle; }p[2],m[2]; int i; FILE *fp; fp=fopen("c:\paydata","w"); if((fp=fopen("c:/person","w"))==NULL) { printf("cannot open the file\n"); exit(0); } printf("now we start inputing the information:name:3 words,department:3, basepay:float,allowance:float,totle:float\n"); printf("this time we input 2 persons' information\n");

for(i=0;i<2;i++) {scanf("%s,%s,%f,%f",p[i].name,p[i].department,&p[i].basepay,&p[i].allowance); p[i].totle=p[i].allowance+p[i].basepay; }

for(i=0;i<2;i++) fwrite(&p[i],sizeof(struct people),1,fp); fclose(fp); fp=fopen("paydata","r"); for(i=0;i<2;i++) {fread(&m[i],sizeof(struct people),1,fp); m[i].basepay=m[i].basepay+100; m[i].totle=m[i].totle+100; } for(i=0;i<2;i++) {printf("%s,%s,%f,%f,%f",m[i].name,m[i].department,m[i].basepay,m[i].allowance,m[i].totle); printf("\n"); } fclose(fp); } 这里姑且不看结构化的问题。此程序调试时没有语法错误只有逻辑错误,请各位帮忙看一下为什么。

更让我百思不得其解的是:我的一位朋友用几乎完全一样的代码却解决了问题,其代码如下:#include<stdio.h> #define number 2 struct person { char name[20]; char dptm[20]; int basepay; int allowance; int total; }ps[number]; void save() { int i; FILE *fp; if((fp=fopen("c:/person","wb"))==NULL) { printf("cannot open the file\n"); exit(0); } for(i=0;i<2;i++) { ps[i].total=ps[i].basepay+ps[i].allowance; fwrite(&ps[i],sizeof(struct person),1,fp); } close(fp); } void browse() { int i; FILE *fp=fopen("c:/person","rb"); printf("students' information:\n"); for(i=0;i<number;i++) { fread(&ps[i],sizeof(struct person),1,fp); ps[i].basepay=ps[i].basepay+100; ps[i].total=ps[i].total+100; printf("%s %s %d %d %d\n",ps[i].name,ps[i].dptm,ps[i].basepay, ps[i].allowance,ps[i].total); } close(fp);

} void main() { int i; printf("please input the information ofthe students:\n"); for(i=0;i<number;i++) { scanf("%s %s %d %d",ps[i].name,ps[i].dptm,&ps[i].basepay,&ps[i].allowance); } save(); browse(); } 请各位看一下这两个程序有什么不同,为什么他的可以实现,我的就不行。另外请教文件操作的真知灼见,因为这一点 常常让我感到很头疼。

期待各位的回复!!!!!!!!!!!! 注:我想知道为什么文件写不进去或者写进去了但输出的结果不合适

搜索更多相关主题的帖子: 文件 
2005-04-18 18:05
jehovahxxx
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-1-26
收藏
得分:0 
乱糟糟  

#include \"stdio.h\" main() {FILE *myMind; printf(\"Life is A rollercoaster\"); /*生活就像过山车*/ if(myMind=fopen(\"My Heart\",\"w+\")==NULL) printf(\"tomorrow never comes\"); fputs(\"YOU\",myMind); printf(\"U\'R the last things on my mind!\"); }
2005-04-19 20:34
快速回复:[求助]一个文件的问题
数据加载中...
 
   



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

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