返回信息流rewind函数是将 文件位置 设置到 文件的起始位置。
我试了一下,对于以r+ 或者 w+方式打开的FILE此函数有效。但是对于以a+方式打开的FILE此函数好像没有效果。测试代码如下:
#include <stdio.h>
int main() {
char str[] = "abcdefghigklmnopqistuvwxyz";
FILE *fp = fopen("./haha.txt","a+");
fprintf(fp, "%s\n",str);
printf("first file pointer:%ld\n", ftell(fp));
rewind(fp);
//fseek(fp, 0, SEEK_SET);
printf("second file pointer:%ld\n", ftell(fp));
fputs( "123456789", fp);
printf("third file pointer:%ld\n", ftell(fp));
fclose(fp);
return 0;
}
输出结果为:
first file pointer:27
second file pointer:0
third file pointer:36
根据这个结果来看,是直接追加到文件中去的。。rewind函数没有起到相应的作用。。难道rewind还与文件的打开方式有关?? 有没有哪位兄太解释一下哈??
这是一条镜像帖。来源:北邮人论坛 / cpp / #31221同步于 2009/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一个关于rewind函数的疑惑
p2p
2009/11/12镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 p2p 的大作中提到: 】
: rewind函数是将 文件位置 设置到 文件的起始位置。
: 我试了一下,对于以r+ 或者 w+方式打开的FILE此函数有效。但是对于以a+方式打开的FILE此函数好像没有效果。测试代码如下:
: #include <stdio.h>
: ...................
如果将文件以附加("a" 或者 "a+")模式打开,写入文件的任何数据总是会被附加在后面,不管文件指针的位置。
原来是再输入的时候又移位了阿。。哈哈 谢谢。
【 在 jmpesp 的大作中提到: 】
: 如果将文件以附加("a" 或者 "a+")模式打开,写入文件的任何数据总是会被附加在后面,不管文件指针的位置。