c语言fopen追加模式下fseek失效
来源:互联网 发布:数据服务健康状况警报 编辑:程序博客网 时间:2024/05/24 01:02
转载:http://www.cnblogs.com/rusty/archive/2011/11/17/2253069.html
c语言fopen追加模式下fseek失效
用到编程改变文件某个字段的值,结果发现此现象。上代码:
int writepcap(char *filename,int begin,int len,char *content)
{
if(!pcap || !content)
return -1;
FILE *fp = NULL;
fp = fopen(filename,"ab");//rb+
if(!fp)
return -2;
if(-1 == fseek(fp,begin,SEEK_SET))
{
fclose(fp);
return -3;
}
//printf("curr:%ld\n",ftell(fp));
if(fwrite(content, sizeof(unsigned char), len, fp) <= 0)
{
fclose(fp);
return -4;
}
fclose(fp);
return 0;
}
结果发现ftell输出的位置是正确的,但是写的时候还是写在了最后面。
在linux下,man fopen看到:
a+ Open for reading and appending (writing at end of file). The file is created if it does not exist. The initial file
position for reading is at the beginning of the file, but output is always appended to the end of the file.
原来如此。
解决办法:改为rb+即可。
0 0
- c语言fopen追加模式下fseek失效
- c语言中的 fopen fseek fread fwrite
- C语言文件读写常识(fseek, ftell, fread, fwrite, fopen)
- C语言几个文件操作函数fopen(),fseek(),fscanf(),fwrite()
- C语言中的基本文件操作:fopen , fread , fseek , fclose.
- C fopen,fseek,fprintf,feof,ftell,rewind
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- c语言fseek、fscanf用法
- C语言中的ftell,fseek
- C语言fseek函数了解
- c库 文件操作----fopen fread fwrite fseek fclose
- fopen与fseek函数
- fopen、fseek、fread、fclose
- fopen、fseek、fread、fclose
- fopen,fseek,fread,fclose
- poj-1019
- [leetcode] Reorder List
- SQL常用系统函数@@
- Android-Universal-Image-Loader异步加载图片框架学习研究
- 二叉树的最长路径
- c语言fopen追加模式下fseek失效
- android ADB命令的使用
- 2015年考研政治科目设置简述及复习
- 程序员2年苦心积攒学习资料【下载】
- Android 时间日期选择器的用法
- 定时器 主从模式 大揭秘
- Linux系统信息查看命令大全
- Unity3D如何减少App的大小
- 求教