fwrite在任意位置写入文件,并可修改文件内容
2017-04-01 18:46
274 查看
想实现类似迅雷那样下载时可以从文件半中间写入的功能
#include<stdio.h>
int main()
{
FILE *fp;
fp=fopen("overwrite.bin","rb+"); //使用rb+模式,可以往半中间插入数据,而且是覆盖插入,若使用"ab+"每次都插入到最后面,调用fseek也没用
if(NULL != fp)
{
if(-1 == (fseek(fp,9, SEEK_SET)))
printf("seek error\n");
fwrite("abcde",1, 5, fp);
fclose(fp);
}
else
{
printf("fopen error");
return 0;
}
return 0;
}
刚开始用ab+模式打开, 每次都写入到最后面. 用rb+就可以定位到任意位置写入了.
在linux下已测试,因为用"rb+"打开要保证文件已存在. 使用命令 #touch overwrite.bin 新建文件
将上述代码 编译运行.
用vi 打开overwrite.bin 看到内容为第9字节开始abcde
然后再将fseek(fp,9,SEEK_SET)中的9改成11:fseek(fp,11,SEEK_SET), 编译运行. 再用vi打开overwrite.bin可以看到在第9字节开始的内容为"ababcde".
之前写入的cde被覆盖了
转:http://www.cnblogs.com/rusty/archive/2011/11/17/2253069.html http://bbs.chinaunix.net/thread-1794396-1-1.html
#include<stdio.h>
int main()
{
FILE *fp;
fp=fopen("overwrite.bin","rb+"); //使用rb+模式,可以往半中间插入数据,而且是覆盖插入,若使用"ab+"每次都插入到最后面,调用fseek也没用
if(NULL != fp)
{
if(-1 == (fseek(fp,9, SEEK_SET)))
printf("seek error\n");
fwrite("abcde",1, 5, fp);
fclose(fp);
}
else
{
printf("fopen error");
return 0;
}
return 0;
}
刚开始用ab+模式打开, 每次都写入到最后面. 用rb+就可以定位到任意位置写入了.
在linux下已测试,因为用"rb+"打开要保证文件已存在. 使用命令 #touch overwrite.bin 新建文件
将上述代码 编译运行.
用vi 打开overwrite.bin 看到内容为第9字节开始abcde
然后再将fseek(fp,9,SEEK_SET)中的9改成11:fseek(fp,11,SEEK_SET), 编译运行. 再用vi打开overwrite.bin可以看到在第9字节开始的内容为"ababcde".
之前写入的cde被覆盖了
转:http://www.cnblogs.com/rusty/archive/2011/11/17/2253069.html http://bbs.chinaunix.net/thread-1794396-1-1.html
相关文章推荐
- C# 从内嵌资源读取文件内容并写入到指定位置
- 创建新文件、写入内容、获取上次修改时间
- 将richTextBox中的内容写入txt文件发现不换行(解决方法),在richTextBox指定位置插入文字
- java使用randomaccessfile在文件任意位置写入数据
- 读取文件任意位置的内容——RandomAccessFile
- 在文件指定位置读取和写入内容RandomAccessFile
- 写入文件,追加内容,修改内容;shell,sed
- C语言中链表任意位置怎么插入数据?然后写入文件中?
- fwrite不能向文件中写入内容
- ProgressBar控件的应用;文件的读出和写入;目录和文件管理;检索计算机上逻辑驱动器盘符;XML文件的增加、修改、读节点内容
- 获取tomcat上properties文件的内容——方便文件存储位置的修改,解耦和
- 06_XML的写入_dom4j添加、删除、修改Xml文件内容
- 利用scanf函数修改内存中任意位置内容
- 读取文件任意位置的内容——RandomAccessFile
- 1.实验 5.2.5 文件定位 用lseek()函数实现以下功能 1. 获取文件大小 2. 为文件添加指定长度的空洞 3. 在指定位置写入指定内容 4. 读出指定位置的内容 1. 获取文件大小
- 获取tomcat上properties文件的内容——方便文件存储位置的修改,解耦和
- C语言中链表任意位置怎么插入数据?然后写入文件中?
- 在文件指定位置读取和写入内容RandomAccessFile
- kesioncms (科讯cms) 6.x-8.x版本写入任意内容文件漏洞
- 创建4个线程,4个线程同时对一个文件进行修改。线程1负责向文件写入A,线程2负责向文件写入B,线程3负责写入C,线程4负责写入D。最终文件里的内容应该是ABCDABCDABCD....循环10次;