您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言将文本文件中的内容输出到二进制文件

时间:01-03来源:作者:点击数:

从文本文件中读取内容,然后写入二进制文件。文件名通过命令行参数传递。

该程序涉及到main()函数传参的问题,请查看:C语言mian()函数详解

代码如下:

#include <stdio.h>
#define SIZE 10
#define NAMESIZE 25
typedef struct {
    char name[NAMESIZE];
    int  midterm;
    int final;
    int homeworks;
} student;
// writeastudent() 向打开的 fout 文件中写入 who(内容),返回写入的总字节数
int writeastudent(FILE *fdout, student * who){
    char * p;
    char * limit = ((char *)who)+sizeof(student);
   
    for (p=(char *)who;p<limit;p++){
        fputc(*p, fdout);
    }
    return (limit - (char *)who);
}
int main (int argc, char *argv[]){
    int n = 0;  // 记录的条数
    int m;  // 每条记录的字节数
    student who;  // 一条记录的缓存
   
    FILE *fdin;  // 输入文件
    FILE *fdout;  // 输出文件
    if(argc!=3){
        printf("Usage: %s infile outfile\n", argv[0]);
        exit(0);
    }
   
    if((fdin=fopen(argv[1],"r"))==NULL){
        perror("fopen");
        exit(1);
    }
    if((fdout=fopen(argv[2],"w"))==NULL){
        perror("fopen");
        exit(1);
    }
    while(fscanf(fdin,"%s %d %d %d",
              who.name, &who.midterm, &who.final, &who.homeworks)!=EOF){
        m = writeastudent(fdout, &who);
        printf("m=%d\n", m);
        n++;
    }
    printf("n=%d\n", n);
    fclose(fdin);
    fclose(fdout);
}

该程序构建后,需要通过命令行工具(cmd.exe)运行。

例如,我编译后的程序在 E:\cDemo\Debug\ 文件,需要操作的 2 个文件位于 D 盘根目录,分别为 file1.txt、file2.txt。

file1.txt 中的内容为:
     小明 12 45 56
     王刚 90 90 89
     长生 100 100 100

需要在命令行进行如下操作:

打开file2.txt,发现是乱码,因为是以二进制方式写入的,以文本方式打开,看到的内容无实际意义。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门