目录
C语言-文件操作3
文件定位
打开模式‘r’‘w’位置指针指向文件头;
打开模式‘a’位置指针指向文件尾。
文件位置指针与C语言指针不同,仅仅是一个标志,表示文件读写到的位置。
文件位置指针由系统自动设置,对用户隐藏。
实际开发中,偶尔需要移动位置指针,我们把移动位置指针称为文件定位。
C语言提供了ftell、rewind和fseek三个函数来实现文件定位功能。
1.ftell函数
ftell函数用来返回文件位置指针的值,这个值是当前位置相对于文件开始位置的字节数。
函数声明:
long ftell(FILE *fp);
2.rewind函数
rewind函数用来将位置指针移动到文件开头。
函数声明:
void rewind(FILE *fp);
3.fseek函数
fseek用来将位置指针移动到任意位置。
函数声明:
int fseek(FILE *fp, long offset, int origin);
参数说明:
- fp为文件指针,也就是被移动的文件。
- offset为偏移量,也就是要移动的字节数。
long类型,是希望移动范围更大,能处理的文件更大。
offset为正时,向后移动;offset为负时,向前移动。
3.origin为起始位置,也就是从何处开始计算偏移量。
C语言规定的起始位置有三种,分别是:
0-文件开头;1-当前位置;2-文件末尾。
fseek(fp, 100, 0); //从文件开始位置计算,向后移动100字节。
fseek(fp, 100, 1); //从文件当前位置计算,向后移动100字节。
fseek(fp, 100, 2); //从文件尾部位置计算,向后移动100字节。
文件缓冲区
当调用fprintf、fwrite等函数往文件写入数据的时候,数据先写入缓冲区,等缓冲区写满之后或者调用fclose时才会把缓冲区的数据写入文件。
实际开发中,如果程序员想把缓冲区的数据立即写入文件,可以调用fflush库函数。
函数声明:
int fflush(FILE *fp);
返回0成功,其他失败。
标准输入、标准输出和标准错误
Linux操作系统为每个程序默认打开三个文件,即标准输入stdin、标准输出stdout和错误输出stderr,
其中0就是stdin,表示输入流,指从键盘输入,1代表stdout,2代表stderr,1,2默认是显示器。
printf(“Hello world!\n”);相当于fprintf(stdout,“Hello world!\n”);
实际开发中,一般会关闭这几个指针。
谢谢阅读,欢迎各位点赞加评论。