常用文件函数总结
常用文件函数总结
文章目录 一.fopen()函数 二.()函数三.getc()函数四.putc()函数五. ()函数 六.()函数七.fgets()函数八.fputs()函数九.fseek()函数 十.ftell()函数十一.()函数十二.()函数
一.fopen()函数
它的第一个参数是待打开文件的名称,第二个参数是一个字符串,指定待打开文件的模式。(下面将会用它打开.cpp和.txt格式的文件)
1. fopen()的模式字符串 模式字符串含义
“r”
以读模式打开文件
“w”
以写模式打开文件,把现有文件的长度截为0,如果文件不存在,则创建一个新文件
“a”
以写模式打开文件,在现有文件末尾添加内容,如果文件不存在,则创建一个新文件
“r+”
以更新模式打开打开文件(即可以读写文件)
“w+”
以更新模式打开打开文件(即读和写),如果文件存在,则将其长度截为0(就是删掉原来的内容!!);如果文件不存在,则创建一个新文件
“a+”
以更新模式打开打开文件(即读和写),在现有文件的末尾添加内容,如果文件不存在则创建一个新文件;可以读整个文件,但是只能从末尾添加内容
略
略
用法:
//这段代码文件名为fille.cpp#include
int main(void)
{FILE *fp;if((fp=fopen("file2.cpp","r"))==NULL)//.cpp可以不带 printf("error");elseprintf("open");
}
效果:
fille.cpp和.cpp需要保存在同一文件中:
二.()函数
(fp)函数关闭fp指定的文件,必要时刷新缓冲区。对于较正式的程序,应该检查是否成功关闭程序。如果关闭成功,()函数返回0,否则返回EOF:
用法:
#include
int main(void)
{char ch;FILE *fp;//fopen()if((fp=fopen("file2.cpp","r"))==NULL)//.cpp可以不带 printf("error\n");elseprintf("open\n");//fclose() if(fclose(fp)==0)printf("success\n");elseprintf("error\n");
}
效果:
三.getc()函数
下面这条语句的意思是“从fp指定的文件中获取一个字符”
ch=getc(fp);
用法:
#include
int main(void)
{char ch;FILE *fp;//fopen()if((fp=fopen("file2.cpp","r"))==NULL)//.cpp可以不带 printf("error\n");elseprintf("open\n");//fclose() //略//getc()while((ch=getc(fp))!=EOF)printf("%c",ch);
}
效果:
四.putc()函数
下面语句的意思是“把字符ch放入FILE指针fp指定的文件中”:
putc(ch,fp);
用法:
#include
int main(void)
{char ch;FILE *fp;//putcfp=fopen("file2.cpp","a");//以写模式打开文件 putc('*',fp);fclose(fp);fp=fopen("file2.cpp","r");while((ch=getc(fp))!=EOF)printf("%c",ch);
}
效果:
五. ()函数
与()函数工作方式类似,()函数第一个参数为文件指针,而后是格式化列表和字符串,或者只有字符串。
如:
fprintf(fp,"wozhenshuai")
char a[]="wozhenshuai"
fprintf(fp,"%s",a);
()的第一个参数还可以是指向标准文件的指针:
stdio.h头文件把3个文件指针与3个标准文件相关联,c程序会自动打开这3个标准文件
1.标准文件和相关联的文件指针 标准文件文件指针通常使用设备
标准输入
stdin
键盘
标准输出
显示器
标准错误
显示器
用法:
#include
int main(void)
{FILE *fp;char ch;fp=fopen("F.txt","a+");fprintf(fp,"shuaibaol");fclose(fp);//如果不重新关闭打开,会输出很多空格,具体原因不清楚fp=fopen("F.txt","a+");while((ch=getc(fp))!=EOF){printf("%c",ch);}}
效果:
使用函数前文件内容:
使用后:
若以指向标准文件的指针作为参数,可以理解为硬件设备为一个文件,将字符串输出到屏幕上(和),这个时候()和()用法是一样的,在此不再举例。
六.()函数
()与scanf()工作方式类似,但()把FILE指针作为第一个参数。
他将文件中的字符串作为输入传递给变量。
如:
char ch[100];
fscanf(fp,"%s",a);
以指向标准文件的指针作为参数(只有stdin):
char ch[100];
fscanf(stdin,"%40s",a);//只从输入中读取40个字符(或者以回车键提前结束)
用法:
#include
int main(void)
{FILE *fp;char ch[1000];fp=fopen("F.txt","a+");fscanf(fp,"%s",ch);puts(ch);
}
效果:
以stdin作为参数:
#include
int main(void)
{FILE *fp;char ch[1000];
// fp=fopen("F.txt","a+");fscanf(stdin,"%s",ch);puts(ch);
}
效果:
七.fgets()函数
它的第一个参数表示存储输入位置的地址(char*类型);第二个参数是一个整数,表示待输入字符串的大小;最后一个参数是一个指针,指定带读取的文件。(从一个文件中读取字符串,存储到第一个参数指向的内存块中(就是存在一个字符数组里))。
下面是一个调用该函数的例子:
int STLEN=?;
char ch[];
fgets(ch,STLEN,fp);
fgets()函数读取输入直到第一个换行符后面(指以stdin作为最后一个参数的情况),或读到文件结尾,或者读到STLEN-1个字符(以上面的fgets()为例)。然后,fgets()在末尾添加一个空字符使之成为一个字符串。字符串的大小是其字符数加上一个空字符。如果fgets()在读到字符上限之前已读完一行,它会把表示结尾的换行符放在空字符前面。fgets()函数在遇到EOF时将返回NULL值,可以利用这一机制检查是否到达文件结尾;如果为遇到EOF则返回之前传给它的地址。
用法:
#include
int main(void)
{FILE *fp;char ch[1000];fp=fopen("F.txt","a+");fgets(ch,100,fp);puts(ch);
}
效果:
以指向标准文件的指针作为参数(stdin):
#include
int main(void)
{FILE *fp;char ch[1000];
// fp=fopen("F.txt","a+");fgets(ch,100,stdin);//回车结束puts(ch);
}
效果:
八.fputs()函数
fputs()函数接受两个参数:第一个是字符串地址;第二个是文件指针。该函数根据传入地址找到的字符串写入指定的文件中。和puts()函数不同,fputs()在打印字符串时不会在末尾添加换行符。(将字符串输出到文件中)
下面是使用该函数的例子:
char ch[];
fputs(ch,fp);
由于fgets()保留了换行符。fputs()就不会再添加换行符(就把fgets()获取的换行符直接输出就好了),他们配合的非常好。
用法:
#include
int main(void)
{FILE *fp;char ch[]="\nyouxiu";fp=fopen("F.txt","a+");fputs(ch,fp);
}
运行前:
运行后:
以指向标准文件的指针作为参数:
#include
int main(void)
{FILE *fp;char ch[]="\nyouxiu";
// fp=fopen("F.txt","a+");fputs(ch,stdout);
}
效果:
九.fseek()函数
fseek()的第一个参数是FILE指针,指向待查找的文件,fopen()应该已打开该文件;fseek()的第二个参数是偏移量。该参数表示从起点开始(起点可以是开头、结尾、和当前位置)要移动的距离(参见下面表格列出的起始点模式)。该参数必须是一个long类型的值,可以为正(前移),负(后移)或0(保持不移动)。fseek的第三个参数是模式,该参数确定起点。根据ANSI标准,在stdio.h头文件中规定了几个模式的明示常量。
1.文件的起始点模式 模式偏移量的起始点
SEEK_ SET
文件开始处