想要查看fseek,ftell,函数,请登录这个网站:
-
cplusplus.com - The C++ Resources Networkhttps://legacy.cplusplus.com/
还有一个函数没有写出来,是rewind,它是:让⽂件指针的位置回到⽂件的起始位置,感兴趣的可以自行查看哦。
-
fseek的使用:
对于fscanf和fprintf还有其它的函数而言,它们只能指定数让它们读或写出来,而对于fseek函数则是:根据⽂件指针的位置和偏移量来定位⽂件指针(⽂件内容的光标)。其中它两是一一对应关系:则代码为:
#include<stdio.h>
//fseek的使用:
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//读文件
int ch = fgetc(pf);
fseek(pf, 4, SEEK_CUR);
ch = fgetc(pf);
printf("%c\n", ch);
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
如果想知道后两个的用法,请自式。
-
ftell的使用:
它的意思是:返回⽂件指针相对于起始位置的偏移量。我们废话不多写,直接上代码,则代码为:
//ftell的使用
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//读文件
int ch = fgetc(pf);
fseek(pf, 0, SEEK_END);
ch = fgetc(pf);
printf("%d\n", ftell(pf));
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
基本上都是一样的。
-
题目:拷贝文件:
将test1.txt文件中的内容拷贝到test2.txt中去
则代码为:
#include<stdio.h>
//拷贝文件:将test1.txt文件中的内容拷贝到test2.txt中去
int main()
{
//打开文件
FILE* pf1 = fopen("test1.txt", "r");
if (pf1 == NULL)
{
perror("fopen :test1.txt ");
return 1;
}
FILE* pf2 = fopen("test2.txt", "w");
if (pf2 == NULL)
{
fclose(pf1);
perror("fopen :test2.txt ");
return 1;
}
//读文件和写文件
int ch = 0;
while ((ch = fgetc(pf1)) != EOF)
{
fputc(ch, pf2);
}
fclose(pf1);
pf1 = NULL;
fclose(pf2);
pf2 = NULL;
return 0;
}
代码不繁琐,但是不容易理解。