c语言中fseek函数 c语言fseek函数的用法示例
C语言中,fseek函数怎么控制移动的方向?怎么往前或往后,最好能有个例子。 谢谢!
fseek有三个参数,第1个是文件句柄,通过打开文件时得到;第2个就是移动的字节数,这个数可以是正的,就是向后(文件尾部)移动,也可以是负的,即向前(文件头部)移动;第3个参数指明从哪里移动,如果写SEEK_SET就是从文件头部移动多少字节,如果写SEEK_END则是从尾部开始移动,SEEK_CUR则是从当前位置移动。
成都创新互联始终坚持【策划先行,效果至上】的经营理念,通过多达十多年累计超上千家客户的网站建设总结了一套系统有效的全网推广解决方案,现已广泛运用于各行各业的客户,其中包括:成都服务器托管等企业,备受客户赞扬。
比如
要将文件指针移动到文件开始的第24字节位置:fseek(fp,24,SEEK_SET);
移动到文件尾部向前50字节:fseek(fp,-50,SEEK_SET);
在当前位置移动8个字节(跳过8个字节数据):fseek(fp,8,SEEK_CUR);
在当前位置向前移动16个字节(准备重新读取数据):fseek(fp,-16,SEEK_CUR);
在C语言中fseek()的功能
fseek()是重定位流(数据流/文件)上的文件内部位置指针。
注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
扩展资料:
注意事项
fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。
这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。
fseek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能确保结果符合预期。
参考资料来源:百度百科-fseek
C语言关于fseek函数。
中文文件要用TCHAR之类的多字节方法处理。
你的方法是把中文看成2进制一个字符一个字符的数据文件来处理,也是可以的,fseek工作完全正常,
问题是输出字符的显示,你可以显示每个字节的值,但不能显示成肉眼可识别的汉字。
putchar ( ch ); 可用于 ASCII字符。
你可以换成: printf("%02x ", 0xff ch ); 可以显示单个字节的码值。从输出的码值可以看出,程序没有问题,只是不能显示成肉眼可识别的汉字。
另外,如果是unicode中文文件,则文件头有不可见的文件类型区分码0xfe 0xff 或 0xff 0xfe 等等。
2个单个字节码,合成一个双字节码,有大端和小端文件问题,也许需要互相交换相邻2个字节,再显示成中文。
当前文章:c语言中fseek函数 c语言fseek函数的用法示例
链接地址:http://pwwzsj.com/article/doogpdj.html