c fopen fread 错误
真的被,读取一个txt文本,结果一个早上都没搞好
程序如下:
能看出哪里有问题么,输出字符串,得到的结果后面有“屯”或则 “烫”,单个字符输出来也有,为何,搜啊搜,改txt的内容,依旧不行
最后 改fopen 的r 改为rb就可以了,神奇了,明明txt就是ascii码文件啊,为什么要改成rb啊,b是二进制的意思啊
再搜,论坛里面高人说了:
二进制打开之后可以使用fgets,ascii打开之后也可以使用fwrite。
区别就是
“只不过回车符有点不一样。一个是0x0a,一个是0x0d 0x0a。具体哪个是哪个我也记不得了。”
二进制方式打开
1、会把所有字符都读出来,包括:回车,换行,'\0',直到文件结束,才停止读;
2、可以完全读出所有类型的文件,包括:exe,dll,ocx......
ascii方式打开,当遇到以下字符:
1、回车,换行,'\0',则当前一行文本的停止读的地方,直到本行结束,都不能读出,接着读下一行;
2、只能正确读出文本文件。
要求两个对应:
1 是操作函数与打开方式对应,如 使用fread/fwrite 则要使用2进制方式操作文件,
如果使用的是 文本方式(ascii)可能会出错 ...
2 文件的读 和写方式对应,一个文件写的时候是 2进制方式的,那么读取的时候也用2进制方式,否则可能获取的数据会有差别,差别的来源就在于 两种操作方式的差别:一个直接作为2进制流(2进制方式)操作, 一个是以字符流方式操作(ascii) ...
这哪里是二进制打开和文本打开的区别,明明是dos和unix回车符号的区别。
我来总结下:其实fopen打开文件 什么 “rb” “rt” “r” 这些其实不分文本文件和二进制文件的,但是你使用二进制打开文件,你就不要用fputs fgets 这样ascii的操作函数,你得用fread fwrite
同样的,你用ascii码方式打开文件,那么你就不要用fread,我就是犯了这样的错误
mark::
c fopen fread 错误的更多相关文章
- 007PHP文件处理—— 判断文件与操作文件fopen fread fclose is_executable is_readable is_writeable
<?php /** * 判断文件与操作文件fopen fread fclose * is_executable is_readable is_writeable */ //判断一个文件是不是一个 ...
- fopen,fread和fwrite
在最近的编程练习和写东西的过程中,常常用到了fopen和fread两个函数来读取本地文件.之前使用这两个函数时,一直没有出现过什么问题.也是因为没有出现问题,对这两个函数的用法的一些细节没有很了解,所 ...
- fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结
转载自:http://blog.csdn.net/xidianzhimeng/article/details/23541289 1 fopen 函数原型:FILE * fopen(const char ...
- fopen\fread\fwrite\fseed函数的使用
使用 <stdio.h> 头文件中的 fopen() 函数即可打开文件,它的用法为: FILE *fopen(char *filename, char *mode); filename为文 ...
- 连续使用两次fread 错误和fread返回值
今天在写一个代码,要把一帧的buffer读入到文件,因为有NEON和OpenCL两种不同的实现所以需要读取文件两次,代码如下: FILE *file; ; INTER_BLOCK_SIZE_GPU_R ...
- 读写大“二进制”文件,不必申请很大内存(fopen,fread,fwrite,fclose)
<?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ...
- fopen /open,read/write和fread/fwrite区别
fopen /open,read/write和fread/fwrite区别 转载URL:http://hi.baidu.com/%B9%C8%C9%F1%B2%BB%CB%C0jdp/ ...
- linux缓冲的概念fopen /open,read/write和fread/fwrite区别
fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...
- open/fopen read/fread write/fwrite区别
fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...
随机推荐
- JAVA-JSP内置对象之application对象
相关资料:<21天学通Java Web开发> application对象1.application对象用来取得和设置Servlet的相关信息.2.application对象的生命周期是从服 ...
- ORA-12541:TNS:无监听程序 配置Oracle Myeclipse无法连接上 花费一天时间解决掉的
背景:自己机子做oracle服务器,其他机子可以ping得通我的机子,但是jdbc就是连不上,后来用plsql连出现无监听程序.... 我昨天重新安装Oracle后,用PL/SQL Developer ...
- 基于jQuery个性圆圈倒计时特效
基于jQuery个性圆圈倒计时特效里面包含十几款不用效果的jQuery倒计时特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <section class=" ...
- Go Revel - Filters(过滤器链)
`Fitlers`过滤器链是一个中间件,它们具有单独的功能,并作为管道对请求做链式处理.过滤器链执行框架的所有功能. 对过滤器链的源码分析,请移步 Go Revel - Filter(过滤器)源码分析 ...
- Redis (1) —— 安装
Redis (1) -- 安装 摘要 介绍Mac OS X安装Redis基本方法 版本 Redis版本: 2.8.24 内容 下载Redis包 地址:http://download.redis.io/ ...
- [转]C# RichTextBox不用滚动条
转自:http://blog.csdn.net/happy09li/article/details/7444912 第一种思路: richTextBox1.ScrollBars = RichTextB ...
- os.walk函数
import os# g = os.walk("D:\aaa") for i in os.walk(R"D:\aaa"): print(i)#执行结果如下('D ...
- 【jquery】基于 jquery 的翻牌效果 flip
最近做了个类似于塔罗牌翻牌的效果,分享给大家. <!doctype html> <html lang="en"> <head> <meta ...
- jQuery(二):jQuery选择器
jQuery选择器类似于CSS选择器,用来选取网页中的元素.例如: $("h3").css("background-color","red" ...
- 记一次MyEclipse闪退的解决方法
http://www.th7.cn/Program/java/201408/262487.shtml ———————————————————————————————————————————————— ...