#include <stdio.h>
#include <stdlib.h> void text_to_bin(char *argv[]);
void bin_to_text(); typedef struct
{
int xh;
char name[20];
int age;
}Student;
int main(int a,char *argv[]){ if(a!=4){
printf("参数不够!\n");
}
text_to_bin(argv);
bin_to_text(argv); return 0; }
void text_to_bin(char *argv[]){
Student stu;
FILE *fp1, *fp2;
fp1 = fopen(argv[1],"r");
if(fp1==NULL){
printf("source file open error");
exit(1);
}
fp2 = fopen(argv[2],"wb");//write b bytes二进制文件 要写入的二进制文件
if(fp2==NULL){
printf("bytes file open error");
exit(1);
}
while(fscanf(fp1,"%d %s %d", &stu.xh, stu.name, &stu.age)!=EOF){
//printf("%s\n",stu.name);
fwrite(&stu, sizeof(stu), 1, fp2);//写入二进制文件stu是指向数据块的二进制结构体变量; 每次写入1个结构体变量 }
fclose(fp1);
fclose(fp2);
}
void bin_to_text(char *argv[]){
Student stu;
FILE *fp1, *fp2;
fp1 = fopen(argv[2],"rb");//只读方式读取二进制文件
if(fp1==NULL){
printf("source file open error");
exit(1);
}
fp2 = fopen(argv[3],"w");//写入文本文件
if(fp2==NULL){
printf("bytes file open error");
exit(1);
}
//必须>0 循环
/* while(fread(&stu,sizeof(stu), 1, fp1)){
fprintf(fp2, "%d %s %d\n",stu.xh, stu.name, stu.age);
} */ size_t size = fread(&stu, sizeof(stu),1,fp1);
if(size==0) return;
//feof只能用在二进制文件
while(!feof(fp1)){
fprintf(fp2, "%d %s %d\n",stu.xh, stu.name, stu.age);
fread(&stu, sizeof(stu),1,fp1);//必须加
} fclose(fp1);
fclose(fp2);
}

  

fread和fwrite和feof读写二进制文件的更多相关文章

  1. fread和fwrite用法小结

    fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出. #include <stdio.h>size_t fread(void *p ...

  2. Matlab 用fread、fwrite实现大文件读写

    最近在分析一个35G的大数据文件,猛一看,是不是很吓人啊,不过还好,师兄写文件的格式非常规范,读取数据来也就很方便了,主要是使用了读写文件的两个函数fread和fwrite,下面用matlab简单尝试 ...

  3. 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

    函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...

  4. C++之函数fgetc和fputc、fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

    #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int ...

  5. fread和fwrite的使用

    fread和fwrite的使用 fread和fwrite一般用于二进制文件的输入/输出,要不然你打开fwrite写入的文件就是乱码. 1.fread和fwrite函数 数据块I/O fread与fwr ...

  6. [Matlab+C/C++] 读写二进制文件

    introduction 因为Matlab操作简单.方便,它被应用于很多领域:音频处理,图像处理,数值计算等.尽管MATLAB容易操作,但受限于他的语言解释机制,MATLAB的执行速度通常较低.C/C ...

  7. C编程中fread 、fwrite 用法总结

    在C语言中进行文件操作时,我们经常用到fread()和fwrite(),用它们来对文件进行读写操作.下面详细绍一下这两个函数的用法.   我们在用C语言编写程序时,一般使用标准文件系统,即缓冲文件系统 ...

  8. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  9. open/fopen read/fread write/fwrite区别

    fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...

随机推荐

  1. python爬取b站排行榜视频信息

    和上一篇相比,差别不是很大 import xlrd#读取excel import xlwt#写入excel import requests import linecache import wordcl ...

  2. Qt5 源代码自动跳转

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/nixiaoxianggong/articl ...

  3. LOJ3146 APIO2019路灯(cdq分治+树状数组)

    每个时刻都形成若干段满足段内任意两点可达.将其视为若干正方形.则查询相当于求历史上某点被正方形包含的时刻数量.并且注意到每个时刻只有O(1)个正方形出现或消失,那么求出每个矩形的出现时间和消失时间,就 ...

  4. Codeforces Round #568 Div. 2

    没有找到这场div3被改成div2的理由. A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long ...

  5. c# Path.Combine

    Path.Combine: c#获取当前项目路径 : //获取包含当前执行的代码的程序集的加载文件的完整路径 var appPath = System.IO.Path.GetDirectoryName ...

  6. Java对list进行分页,subList()方法实现分页

    /** * 自定义List分页工具 * @author hanwl */ public class PageUtil { /** * 开始分页 * @param list * @param pageN ...

  7. UML系列——OO Unit4分析和学期总结

    一.本单元的架构设计 1.类图 第一次 第二次 2.关键方法和架构简述 总体而言是读取图的时候就完成大部分计算(完成缓存),调用查询方法时只是展示计算的结果,少部分直接计算.主要是设计了各种自己定义的 ...

  8. vue项目启动报错You may use special comments to disable some warnings.

    在build/webpack.base.conf.js文件中,注释或者删除掉:...(config.dev.useEslint ? [createLintingRule()] : []),

  9. HelloWorld! C++纠错版

    例题:1 #include<iostream> int main() { cout << "HelloWorel!" ; ; } #include < ...

  10. group by 和 order by 的区别 + 理解过程

    order by 和 group by 的区别order by 和 group by 的区别:1,order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字 ...