揭开:apue2中fwrite二进制文件乱码
来源:互联网 发布:淘宝返利机器人原理 编辑:程序博客网 时间:2024/05/19 18:43
在看《unix环境高级编程》的时候,Stevens蜻蜓点水的给读者留下了一个小问题,然而缺被这个小问题搞得一头雾水。好了,不多说了。问题参见《unix环境高级编程》中文版的P119,英文版P146。
fwrite 函数使用二进制方式写文件。例如,一个整数如果用 4 个字节表示,则在文件中一个整数始终占有 4 个字节,不论整数的大小;与此不同,如果是用字符方式写文件,则一个整数在文件中占有的字节数与整数的大小(整型数字的个数)有关(当然还跟规定的格式有关,如果有的话)。
对于二进制文件,它是用来被使用的(如读取、执行等),而不是用来看的(显示它的内容没有实际意义)。比如这个程序产生的二进制文件 datafile,它的作用就是用同样的结构体变量来读取,如上面的 jiutiao2004 给出的程序所示例的那样;这也是检查楼主的程序写 datafile 是否成功的可靠方法。
以下是fwrite写一个结构体源代码:
/* * fwrite.c * * Created on: Nov 8, 2011 * Author: robbin */#include <stdio.h>#include <stdlib.h>#include <errno.h>intmain(){ FILE *fp; int i; struct student{ char name[10]; int age; float score[2]; char addr[15]; }stu; if ((fp = fopen("datafile","wb+")) == NULL) perror("fopen error"); printf("input your name age scoreA scoreB address\n"); for (i=0; i<2; i++){ scanf("%s %d %f %f %s",stu.name, \ &stu.age, &stu.score[0], &stu.score[1], stu.addr); fwrite(&stu,sizeof(stu),1,fp); } fclose(fp); exit(0);}
方法一:
写一个与之对应的fread读取这个datafile中的结构体。
代码如下:
/* * fread.c * * Created on: Nov 8, 2011 * Author: robbin */#include <stdio.h>#include <stdlib.h>#include <errno.h>struct student{ char name[10]; int age; float score[2]; char addr[15];};intmain(void){ int i; FILE *fp; struct student ret; if ((fp = fopen("datafile","r")) == NULL) perror("fopen error"); for (i=2; i>0; i--){ fread(&ret,sizeof(struct student),1,fp); printf("%s %d %f %f %s",ret.name, \ ret.age, ret.score[0], ret.score[1], ret.addr); } fclose(fp); exit(0);}
方法二:
在linux终端中输入以下命令:
od -c datafileod将已ASCII格式读取文件。
- 揭开:apue2中fwrite二进制文件乱码
- matlab fwrite 写入二进制文件
- 关于二进制文件fread、fwrite函数使用读写
- 二进制文件读和写(fread,fwrite)
- fwrite写入文件乱码问题
- fwrite函数中换行
- fopen , fread fwrite 函数读写二进制文件 问题总结
- fopen , fread fwrite 函数读写二进制文件 问题总结
- fopen , fread fwrite 函数读写二进制文件 问题总结
- 二进制文件和文本文件究竟有什么区别?(内附小实验和C语言中fwrite fread fprintf fscanf函数的用法)
- fwrite写unicode回车遇到乱码
- apue2读书笔记
- PHP从mysql中读取并输出二进制文件的乱码问题
- fwrite
- fwrite
- fwrite
- fwrite
- fwrite
- csdn博文和转载机制
- 彻底刷新文件系统的缓存
- JQUERY_contextMenu_学习
- 文本框不能输入中文判断
- 估计是全世界人民最向往的一件事
- 揭开:apue2中fwrite二进制文件乱码
- C++经典书籍推荐 .
- 戴尔 Streak 10 Pro 购买使用散记
- KMP算法
- samba 服务器的搭建
- 使用js实现对table的动态添加、删除和更新
- 自定义JSP标签概述
- JavaWeb应用程序的规范和web基础的请求处理
- 本地用户组错误: 库没有注册