文件指针的运用:
FILE *<文件名>
EG:FILE *FP
打开函数:fopen
void test()
{
FILE *fp;
fp=fopen("D:/test.doc","r");
}
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:
void test()
{
FILE *fp;
if((fp=fopen("D:/test.doc","rt+"))==NULL)//如果出错,fopen值返回为null
{
printf("nerror on open D:/test.doc");
getchar();
exit(1);
/*
exit(0):正常运行程序并退出程序;
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值*/
}
}//常用这段语句打开文件
fclose:
fclose(文件指针);
EG:
fclose(fp);
//正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。
fgetc:
字符变量=fgetc(文件指针);
eg:ch=fgetc(fp);//其意义是从打开的文件fp中读取一个字符并送入ch中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
void test()
{
FILE *fp;
if((fp=fopen("D:\\ test.txt","r"))==NULL)//如果出错,fopen值返回为null
{//一定要注意目录路径D:\\1\\2\\3\\ "\\"作为分隔
printf("nerror on open D:test.doc");
getchar();
exit(1);
/*
exit(0):正常运行程序并退出程序;
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值*/
}
}//常用这段语句打开文件
void main()
{
test();
system("pause");
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}//这段语句可以用于逐步输入,EOF文档结束标志,putchar输出字符。
fputc:
被写入的文件可以用、写、读写,追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。
写入成功返回写入字符,不成功返回EOF
由此判断是否成功写入:
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char ch;
if((fp=fopen("D:\\test.txt","at+"))==NULL)
{
printf("Cannot open file ,strike any key exit!");
getchar();
exit(1);
}
ch=getchar();
printf("input something after the txt\n(if you input 'Q',exit)");
while (ch!='Q')
{
fputc(ch,fp);
ch=getchar();
}
printf("here is your new txt");
rewind(fp);//重置指针,如果没有重置就会无法读文件,出现一堆屯屯
while (ch!=EOF)
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
system("pause");
}
fread(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址, size 表示数据块的字节数count 表示要读写的数据块块数。fp 表示文件指针。
fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fwrite函数中,它表示存放输出数据的首地址, size
表示数据块的字节数count 表示要读写的数据块块数。fp 表示文件指针
fscanf+fprintf:
fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
fseek:
fseek函数用来移动文件内部位置指针,其调用形式为:
fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首(0),当前位置(1)和文件尾(2)。
rewind:
rewind(文件指针);
它的功能是把文件内部的位置指针移到文件首。
文件检测函数
C语言中常用的文件检测函数有以下几个。
一、文件结束检测函数feof函数调用格式: feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
二、读写文件出错检测函数ferror函数调用格式: ferror(文件指针);
功能:检查文件在用各种输入输出函数进行读写时是否出错。 如ferror返回值为0表示未出错,否则表示有错。
三、文件出错标志和文件结束标志置0函数clearerr函数调用格式: clearerr(文件指针);
功能:本函数用于清除出错标志和文件结束标志,使它们为0值。