c语言一个一个读取文件字节,C语言中二进制文件的读取
fwrite()与fprintf()是不同的。
fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。
当打开文件时,记事本会自动把文件的磁盘内容作为ASCII码转换成对应的字符,然后再显示出来,即显示的是文本内容而不是磁盘内容。
例如,用fwrite向文件写入“65”时,文件的磁盘内容就是保存的65(磁盘上以二进制表示)。当用记事本打开文件时,记事本会读到65,并把65看作一个ASCII码,再把对应的字符“A”显示出来。因此屏幕上看到的文本内容是“A”。 而用fprintf向文件写入“65”时,文件的磁盘内容保存的是“6”和“5”这两个字符对应的ASCII码,分别是54和53。因此文件的磁盘内容是54和53。当用记事本打开文件时,记事本读到54,就显示出对应的“6”。再读到53,就显示出对应的“5”。 代码示例。
#include
#include
void test()
{
FILE *foutput = fopen("output", "w");
int A = 65;
char buffer[10000];
int i = 0;
int l;
/* Write data to file */
fwrite(&A, sizeof(A), 1, foutput);
fprintf(foutput, "%d", A);
fclose(foutput);
/* Read data from file */
foutput = fopen("output", "r");
while (fread(buffer + i, sizeof(char), 1, foutput)) {
++i;
}
l = i;
/* Print data on screen */
for (i = 0; i < l; ++i) {
printf("buffer[%d] = %d\n", i, (int)buffer[i]);
}
printf("l = %d\n", l);
fclose(foutput);
}
int main()
{
test();
return 0;
}
输出结果:
buffer[0] = 65
buffer[1] = 0
buffer[2] = 0
buffer[3] = 0
buffer[4] = 54
buffer[5] = 53
l = 6
打开“output”文件的显示结果:
同样的,fread()与fscanf()也有类似的区别。
fread将文件的磁盘内容直接读入。fscanf将文件的磁盘内容作为ASCII码转换成对应的字符,然后再读入,即读入的是文本内容而不是磁盘内容。
可以想象,如果用fscanf读取上面例子中的文件,每次读取一个字节。那么buffer中前6个字符保存的将是“A[NULL][NULL][NULL]65”。
另外,感觉C语言中的fopen()的打开模式“b”没有作用。例如是写“w”还是“wb”对fwritet和fprintf都没有影响。以前不明白二进制文件是怎么回事,原来是fprintf和fscanf做了一次转换。
c语言一个一个读取文件字节,C语言中二进制文件的读取相关推荐
- java读取文件buffered_关于Java中使用BufferedReader读取文件的疑惑
我记得很久以前写过一个内部使用Byte数组的BufferedStreamReader,实测效率比原本使用Char数组的要快,不过这只是在32位系统下测试的.写这个StreamReader是为了修正文件 ...
- python逐个读取文件_在Python中多次读取同一文件
我需要下载文本文件的zip存档,将存档中的每个文本文件分发给其他处理程序进行处理,最后将解压缩的文本文件写入磁盘. 我有以下代码.它在同一个文件上使用多个打开/关闭,这看起来并不优雅.如何让它更优雅高 ...
- c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)
C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...
- java使用缓冲区读取文件_在Java中使用Google的协议缓冲区
java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...
- 单片机c语言怎样添加自定义头文件,单片机C语言编程与或|头文件常见问题
一.常见问题 1.头文件reg51.h和reg52.h其实是一样的,大家两个都可以用. 2.main()前面的void可加可不加,反正都是无返回值函数. 3.不是每一个程序都要用到死循环while(1 ...
- c语言0x1234占两个字节,C语言考试必考知识点
<C语言考试必考知识点>由会员分享,可在线阅读,更多相关<C语言考试必考知识点(11页珍藏版)>请在人人文库网上搜索. 1.C 语言考试知识点第一章 C 语言基本知识[考点1] ...
- c语言实现自动打开文件夹,c语言打开文件(c语言文件打开方式代码)
1.2 文件的输入输出函数 键盘.显示器.打印机.磁盘驱动器等逻辑设备, 其输入输出都可以通过文件管理的方法来完成.而在编程时使用最多的要算 是磁盘文件, 因此. { printf("File ope ...
- java字节流读取文件_字节流读取文件 java的几种IO流读取文件方式
java字节流怎么读取数据 字节流读取数据例子如下: import java.io.File;import java.io.FileInputStream;import java.io.FileNot ...
- python中读取文件内容-深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
最新文章
- java学习--抽象类与接口
- SQL Server的WAITFOR DELAY注入
- win10+VS2015+pycaffe编译
- tcp/ip 建立过程
- 机器学习知识点(三十四)机器学习类学习资源
- 可折叠Web可能会给我们带来的变化
- php中如何固定表格宽度,实例讲解DataTables固定表格宽度(设置横向滚动条)
- dfa转正则表达式_GitHub - hidva/re2dot: 根据正则表达式生成其对应 DFA 的状态转移图...
- NativeXml (2):对象建立
- 如果一个人不喜欢争,不喜欢计较,只知道退让,是不是真的傻?
- EasyUI 添加一行的时候 行号出现负数的解决方案
- Web API-DOM事件高级
- java 不让滚动条随着拖拽滑动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
- Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结
- 苹果carplay下载_苹果宣布推出CarPlay
- 利用dlib和opencv建立人脸识别数据集并进行人脸识别
- 仿今日头条视频播放JieCaoVideoPlayer
- c语言读取midi文件举例子,c# – 使用NAudio从MIDI文件中读取音符
- Matlab 打不开 无法运行 win10 系统 卡在启动界面没有反应 语言bug
- go timer和ticker使用方式
热门文章
- Data for set COM_LOCAT_ADDR may only be changed in the original system CRQ_100
- Java注解实现之how to use path variable @PathVariable
- SAP OData实现错误消息:OPPORTUNITIES_GET_ENTITY not implemented in data provider class
- 通过 SAP Spartacus 的 Component 映射机制,更改默认购物车 Cart 页面
- CRM Set Type com_commercial的UI界面
- 用代码判断当前系统是否支持某个版本的feature
- imp oracle reschema_Oracle EXP和IMP用法和介绍
- jmeter(二)录制脚本
- java轻功游戏,会轻功又可以飞的游戏(3d大型游戏)
- mac 用惠普扫描仪扫描提示将对您的电脑造成伤害_惠普全能打印神器测评:15秒智能闪充、打一张仅需5分钱...