读取文件时遇到0x00如何处理?

miladuo 2010-08-10 10:15:33
各位好:
我在读取文件的时候用fgets来读取到数组中,但是如果文件中包含0x00的话,那按照正常处理,字符数组中0x00后面的字符就给丢了。高手有什么好方法吗?
另外,我读取的是大文件的,10G的文件很常见,用fgets在效率上会不会低,有什么更好的方法吗?在线等,非常感谢!
...全文
1009 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2010-08-10
  • 打赏
  • 举报
回复
fread和fwrite,写文件是最靠谱的,其他的函数给你带来的麻烦远大于便利
jinglirensheng 2010-08-10
  • 打赏
  • 举报
回复
啥意思?是想用strcpy拷贝,遇到\0就结束了??那么就用memcpy

miladuo 2010-08-10
  • 打赏
  • 举报
回复
我试试fread,然后再逐个字符进行分析。
xixiaoliu 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 miladuo 的回复:]
因为给的文件不规范,所以要写程序转化一下。
[/Quote]

不规范也有个目前的样子啊。看出它的规律,然后二进制读写
miladuo 2010-08-10
  • 打赏
  • 举报
回复
因为给的文件不规范,所以要写程序转化一下。
cattycat 2010-08-10
  • 打赏
  • 举报
回复 1
二进制文件按二进制方式处理吧,用fread.如果是文本文件,还可以用fgets()这个可以读一行,二进制文件如果没有\n估计就读溢出了。
老邓 2010-08-10
  • 打赏
  • 举报
回复
既然是数据库里导出的数据文本,则读写时必然得遵守指定的读写规则:比如指定数据结构,标志位等。
bluejays 2010-08-10
  • 打赏
  • 举报
回复
用fread吧
miladuo 2010-08-10
  • 打赏
  • 举报
回复
是数据库里导出来的数据文本,里面可能包含一些乱码什么的,需要去除掉,所以出现了这个问题。
pengzhixi 2010-08-10
  • 打赏
  • 举报
回复
建议用2进制的方式来读取
xixiaoliu 2010-08-10
  • 打赏
  • 举报
回复
是二进制文件么?那就不应该用文本文件处理函数来读。

fread
ilwmin 2010-08-10
  • 打赏
  • 举报
回复
fread

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧