第一个参数file指针
第二个参数移动的偏移量
第三个参数移动到哪里
分别用3个宏
SEEK_SET 既0 文件开头
SEEK_CUR 既1 文件当前位置
SEEK_END 既2 文件结尾
但不推荐用数字 最好用宏
简言之:
fseek(fp,100L,SEEK_SET);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,SEEK_CUR);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,SEEK_END);把fp指针退回到离文件结尾100字节处。
此函数常用来计算流的长度:
int filesize = fseek( fp, 0, SEEK_END );
fseek( fp, 0, SEEK_SET );
2 fflush(stdin)是一个计算机专业术语,功能是清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)。
3
EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。
#define EOF (-1)
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
4
feof 函数 检查文件流是否读到文件末尾。
当读到文件末尾时,返回非0值;其他情况返回0.
5
fscanf(文件指针,数据格式,需要读到的变量的地址);
#include <stdio.h> #include <stdlib.h> int main() { int num; char name[20]; double height; FILE *fp; fp = fopen("d:\\1.txt", "r+");//“r+” 以可读写方式打开文件,该文件必须存在,d:\\1.txt表示d盘根目录下的1.txt文件 if (fp == NULL) { printf("Cannot open the file!\n"); exit(0); } printf("学号\t姓名\t身高\n"); while (!feof(fp)) { fscanf(fp, "%d%s%lf", &num, name, &height); printf("%d\t%s\t%g", num, name, height); } printf("\n"); fclose(fp);//要记得关闭文件 return 0; }
txt文件可以一行一行读,也可以一行一行的写进去。
fprintf(文件流指针,数据格式,变量值);