windows平台 fwrite写数据出错
来源:互联网 发布:七堂极简物理课 知乎 编辑:程序博客网 时间:2024/05/06 11:30
今天郁闷了,写文件时,数据源都正确,就是写文件时,写0A时会多写一个0D,导致解析文件时,数据显示错误!
最后,通过查证原来是fwrite在作怪:
m_pfData = fopen(m_strFileName, "w+"); 将 "w+“改成为"wb+"就OK了!
原来调用fwrite函数时,如果碰到换行符(0x0A),编译器会自动转换为回车换行符(0x0D 0x0A),然后写入文件。这样写入文件的数据就会与原始数据有差异。
fopen函数参数详解与示例:
格式:文件指针名=fopen(文件名,使用文件方式)
参数:
文件名 意义
"C:\\TC\\qwe.txt" 文件C:\TC\qwe.txt
"qwe.txt" 和程序在同一目录下的qwe.txt
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。
参数:
文件名 意义
"C:\\TC\\qwe.txt" 文件C:\TC\qwe.txt
"qwe.txt" 和程序在同一目录下的qwe.txt
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。
如果成功的打开一个文件, fopen()函数返回文件指针, 否则返回空指针
(NULL)。由此可判断文件打开是否成功。
(NULL)。由此可判断文件打开是否成功。
- windows平台 fwrite写数据出错
- 数据块写函数fwrite
- SAE平台fwrite,file_put_contents等函数写操作
- 【坑坑坑坑坑】fwrite没有把数据写到文件中???
- Windows平台下fwrite函数0x0A变成0x0D 0x0A
- Windows平台下fwrite函数0x0A变成0x0D 0x0A
- Windows平台下fwrite函数0x0A变成0x0D 0x0A
- fread fwrite写文件流
- LPWSTR调用fwrite写文件
- windows系统BleiCorpus 数据集加载出错
- 【总结】Apache在windows平台上的出错
- grads 中读写数据fwrite
- windows下写shell的一个容易出错的地方
- windows下写shell的一个容易出错的地方
- ucos平台上 printf 输出浮点数据出错
- 关于fwrite写文件的一点问题
- fwrite写unicode回车遇到乱码
- 二进制文件读和写(fread,fwrite)
- 32位的汇编!~~
- Nokia N9 常用终端命令(cd,pwd)
- Android 启动性能优化 - kernel篇
- Linux文件系统FAQ
- 32位驱动安装到64位操作系统时出错
- windows平台 fwrite写数据出错
- WINCE TOC解析
- 基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
- ExtJS4中GridPanel组件简单例子
- TOMCAT内存溢出及大小调整
- oracle中substr函数的用法
- VS2005下SDL的编译链接问题
- uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
- LINUX USB 系统(1)