高分跪求:如何输入文件结束符EOF?
比如说更新文件内容时候,
有一数据项不满足条件,把它删除,
比如:
1 aa bb
2 ee ff
把第二条2 ee ff删除后,把第一条重新写回去,再flcose,可是仍然有第二条项目.
如果这里插入个eof就可以解决问题,
但,问题是,怎么把eof加上去呢?
换句话说,我想在fp指向的某处自己设定位文件结束,即,砍掉后面的所有数据.怎么实现?
-------------------
这个问题当然有其他的方法实现,前提是文件内容不多,可以一次读入.
即使文件内容很多,也可以通过设置数据项标志的方法实现.
我在想,按照上面的说法,可以实现么?如何实现呢?
--------------
帮顶者,统统有分
[解决办法]
设置标志貌似比较难
但有个简单方法
创建,删除,改名
源文件a.txt
根据某种算法将数据复制到b.txt
删除a.txt
将b.txt 改名为a.txt
[解决办法]
同意楼上的观点。新建、删除、改名。。。
Eof是 '\0 ',添加就好。。。
[解决办法]
但若如一楼所说的,是不是太麻烦了
[解决办法]
EOF是-1
[解决办法]
上面的想法可以,不过EOF只是系统API访问文件返回给API调用者的一个flag,在C里面是-1,用户是无法写入文件的,因为一个二进制文件内出现任意0到255的字节都是允许的,与 'EOF '冲突了怎么办。
但是可以通过系统提供的API来设置文件结尾,
在Linux下可以包含fcntl.h,使用int chsize(int handle, long size);
在windows下有SetFilePointer SetEndOfFile,请参阅MSDN
这些都是文件稍微底层的操作,所以标准C库函数里面没有
[解决办法]
你在fclose()的时候就会加入的吧
[解决办法]
BOOL SetEndOfFile(
HANDLE hFile
);
可以,不过前提是你有文件handle,如果你是fopen返回的是文件指针
[解决办法]
long pos;
FILE *file;
file=fopen( "filename ", "w+ ");
pos=ftell(file); //获取当前文件指针位置
ftruncate(fileno(file),pos); //根据大小截取文件。
[解决办法]
一个误区。
EOF 不存在文件内部。
[解决办法]
哦 ,进错了, 以为是EOF 函数读入的时候,如何中断的问题 (刚遇到)
[解决办法]
长见识.
[解决办法]
jixingzhong(瞌睡虫·星辰) ( ) 信誉:100
=============================================
肯定用的浏览器自己改过的,对吧?
[解决办法]
zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
[解决办法]
帮顶
[解决办法]
学习了
[解决办法]
星星果然都是高手哇,学习了
[解决办法]
学习了
[解决办法]
Chiyer(星羽)
看不到那里把文件给删除了
因为很多函数都不认识
看来要好好学习了!