难道我遇到的是fwrite函数的bug?

spotboy 2005-12-02 01:06:15
fp = fopen(strLOBID,"wb");
fwrite( (char*)g_jrnbuffer + 112 + 10, (size_t)(loglength - 112 - 10),1 , fp );
fcose(fp);

其中g_jrnbuffer存放了字符数据,从112+10的位置开始。
但是写入文件后,发现,文件的第10个字节处,总是出现00(binary)

调试的过程中,可以保证,g_jrnbuffer中是不存在00的,不知道为什么一写入文件,文件就出现00,而且总是在同一个位置。
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wohow 2005-12-02
  • 打赏
  • 举报
回复
fwrite没有这样的问题
首先看strlen((char*)g_jrnbuffer + 112 + 10)是多少,再看看(size_t)(loglength-112-10),调试一下会找到问题的。
fwrite第二个和第三个参数没有什么本质区别,VC的fwrite的函数实现中首先把这两个数相乘才写文件的。
RainWindy 2005-12-02
  • 打赏
  • 举报
回复
首先请问:g_jrnbuffer + 112 + 10的内容是什么?
程序执行后,文件的长度是多少?
jixingzhong 2005-12-02
  • 打赏
  • 举报
回复
fwrite( (char*)g_jrnbuffer + 112 + 10, 1, (size_t)(loglength - 112 - 10), fp );
第2和第3个参数位置换一下


这个效果是一样的 ~

不过是数据块的大小边了一下,块的数目变了一下,实际上还不是一样的 ?
jixingzhong 2005-12-02
  • 打赏
  • 举报
回复
恩, 说一下:

一个数组写如文件的时候, 比如一个 CHAR [10]
里面只有5个字符,
用fwrite的时候是写了 10 个字节的,
后面的 5 个字节都是 00

你看看是不是这个原因?
ming6424 2005-12-02
  • 打赏
  • 举报
回复
fwrite( (char*)g_jrnbuffer + 112 + 10, 1, (size_t)(loglength - 112 - 10), fp );
第2和第3个参数位置换一下
jixingzhong 2005-12-02
  • 打赏
  • 举报
回复
应该是写文件的问题 ~
jsjjms 2005-12-02
  • 打赏
  • 举报
回复
自己跟踪调试一下,fwrite肯定没有问题的。
采用C语言编写,使用高级Unix编程技术。 C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

70,036

社区成员

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

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