问题描述
- 求教两个C语言程序fseek(fp,0L,0)和rewind(fp)区别
-
程序一:
#include
main()
{
FILE fp;
int i,a[6]={1,2,3,4,5,6},k;
fp=fopen("data.dat","w+");
for(i=0;i<6;i++)
{
fseek(fp,0L,0);
_ _ fprintf(fp,"%dn",a[i]);__
}
rewind(fp);
_ fscanf(fp,"%d",&k);_
fclose(fp);
printf("%dn",k);
}
/
程序运行结果:
6
/
程序二:
#include
main()
{
FILE *fp;
int i,a[6]={1,2,3,4,5,6},k;
fp=fopen("data.dat","w+");
fprintf(fp,"%dn",a[0]);
for(i=1;i<6;i++)
{
rewind(fp);
fprintf(fp,"%dn",a[i]);
}
rewind(fp);
fscanf(fp,"%d",&k);
fclose(fp);
printf("%dn",k);
}
/
程序运行结果:
6
*/=====疑问1: fseek(fp,0L,0);和rewind(fp);有什么区别吗?
疑问2:参考答案说程序一退出循环后,文件fp中的数据为:654321;而文件二退出循环后,文件fp中的数据只保留了6??为什么呢?
疑问3:如何打印出退出循环后,文件fp中的数据呢? printf("%dn",fp);可以吗?但运行程序貌似结果不对
解决方案
fseek(fp,0L,0);和rewind(fp);有什么区别吗
没区别,后者是前者的特例。
两个程序是否一样,取决于你的数据文件,你不但有读,也有写入
解决方案二:
光看函数名,fseek是文件的游标操作;rewind是倒带操作
内涵不一定,结果应该是一样的。
当磁带作为储存介质时,rewind可能是启动磁带机的倒带操作,而fseek未必能起作用
时间: 2024-10-04 20:42:13