一、feof 文件结束
函数原型:
#include
int feof( FILE *stream );
返回值:如果指定的程序,已经到达文件末尾位置,就返回非零值(真)。
#include
int main(void){
FILE *file;
char c;
file = fopen("students.txt","r");
if(!file){
printf("打开文件失败!");
return 1;
}
while(!feof(file)){ //文件不结束就循环
c = fgetc(file); //fgetc 是读取一个字符
printf("%c",c);
}
return 0;
}
读 students.txt 文件,并打印输出。
二、ferror文件 读/写 出错
用 ferror 来判断文件的读写有没有错误:
#include
int main(void){
FILE *file;
file = fopen("students.txt","r"); //以读的方式打开文件
if(!file){
printf("打开文件失败!");
return 1;
}
fputc('A',file); //写入字符 'A'
if(ferror(file)){
perror("文件file发生错误");
}
fclose(file);
return 0;
}
perror 用来输出错误原因:
打开文件是以 读 的方式打开,写入失败,报错!也可以用函数的返回值来判断错误!
三、clearerr 清除文件错误标志
跟清除缓存一个道理,用 clearerr(file); 放在 ferror(file) 后面用来清除文件的错误标志。
如果不清除文件错误,以后读写文件时, 即使没有发生错误,ferror 仍将返回非零值(认为还有错)
四、ftell 获取文件指针的当前位置
函数原型:#include
long ftell( FILE *stream );
FILE *file;
long offset;
offset = ftell(file);
printf("当前位置是: %ld\n", offset);
五、fseek 文件指针定位
注意:文件始终只能从当前的位置向文件尾方向读写!
函数原型:
#include
int fseek( FILE *stream, long offset, int origin );
参数2:
偏移量,可正可负。
<0 向文件头方向偏移
>0 向文件尾方向偏移
参数3:
SEEK_SET 从文件的开始位置定位, 此时参数2必须大于0
SEEK_CUR 从文件的当前位置定位
SEEK_END 从文件的结束位置定位, 此时参数2必须小与0
读取文件的最后10个字符:
#include
int main(void){
FILE *file;
char c;
file = fopen("students.txt","r");
if(!file){
printf("打开文件失败!");
return 1;
}
fseek(file,-10,SEEK_END); //把文件的当前位置定位到倒数第10个字符
while((c = fgetc(file)) != EOF){ //读取文件最后10个字符
printf("%c",c);
}
fclose(file);
return 0;
}
从文件的头部开始读取:
fseek(flie,0,SEEK_SET);
读取当前位置的前10个字符:
fseek(file, -10, SEEK_CUR);
六、rewind 反绕
把文件的位置指针定位到开始位置。
rewind(file)
等效于:
fseek(file, 0, SEEK_SET);