文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>对文件进行相关操作【C/数据结构】

对文件进行相关操作【C/数据结构】

时间:2010-05-31  来源:advancing

//《数据结构》课程实习(程序实现采用C语言)

//已经运行通过

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

//代码:

 

#include<stdio.h>
/************************************************************************************/
/*定义一个结构体*/
/************************************************************************************/
struct person
{
    char name[10];
    char department[10];
    float basepay;
    float allowance;
    float total;
    };

/************************************************************************************/
/*主函数*/
/************************************************************************************/
void main()
{
    FILE *fp,*fq;
    char ch;
    int i=0; /*作循环变量使用*/
    int j=0,k=0; /*建立一个计数的变量*/
    struct person worker; /*定义一个结构变量,为输入数据作准备,即作中转站*/
    struct person bridge[10]; /*建立一个后面更改文件数据的中转桥梁用的结构体数组*/
    if((fp=fopen("F:\\paydata.txt","wb"))==NULL) /*打开文件*/
    {
        printf("connot open paydata file!\n");
        exit(0);
    }
       
       printf("Please enter name,department,baseplay,allowance:\n");/*提示输入数据*/
       scanf("%s%s%f%f",&worker.name,&worker.department,&worker.basepay,&worker.allowance);
                                          /*接收输入数据到结构变量worker中*/

        worker.total=worker.basepay+worker.allowance; /*计数出总工资,并存入相应的输入变量中*/
        while(strcmp(&worker.name,"#")!=0) /*输入数据的结尾标志符# */
        {
            fwrite(&worker,sizeof(struct person),1,fp);
                                            /*将结构变量中的数据通过文件写入函数fwrite和文件指针fp写入文件中*/
            printf("Please enter name,department,baseplay,allowance:\n"); /*提示输入信息*/
            scanf("%s",&worker.name);
            scanf("%s%f%f",&worker.department,&worker.basepay,&worker.allowance);
            worker.total=worker.basepay+worker.allowance; /*工资数据处理*/
            j=j+1;k=k+1; /*记录输入数据的数目*/
        }
            printf("enter data over! The data is in the file of F:\\paydata.txt!\n");
     fclose(fp); /*文件写入工作完毕,关闭写入文件指针*/
            
            
    fq=fopen("F:\\paydata.txt","rb+");
                      /*建立一个可读写的文件指针,为后面更改文件中的数据以及输出数据做好准备工作*/
    for(i=0;i<j;i++) /*将先前建立的文件数据读入到结构数组中,并作相应的修改*/
    {
        fread(&bridge[i],sizeof(struct person),1,fq);
        bridge[i].basepay=bridge[i].basepay+100;
        bridge[i].total=bridge[i].total+100;
     }
     rewind(fq); /*使位置指针重新返回文件的开头,此函数无返回值*/
     
     for(i=0;i<j;i++) /*将修改之后的数据重新存入文件中*/
     {
        fwrite(&bridge[i],sizeof(struct person),1,fq);
     }
     rewind(fq);/*使位置指针重新返回文件的开头,此函数无返回值*/
     
     printf("***********************************************************************\n"); /*最终数据输出部分*/
     printf("Hello!The data of paydata.txt is :\n");
     while(k!=0) /*将更改后的文件中的数据重新输出*/
        {
                fread(&worker,sizeof(struct person),1,fq);
                printf("name:%s, department:%s, basepay:%5f, allowance:%5f, total:%5f\n",&worker.name,&worker.department,worker.basepay,worker.allowance,worker.total);
                k=k-1;
        }
        fclose(fq); /*关闭文件指针*/
    printf("Thank you for your attention! BYE!\n");
    printf("**********************************************************************\n");
    getch();
}
 /*整个重新结束*/
 /*************************************************************************************/


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载