首页 >> 大全

常用文件函数总结

2023-10-16 大全 34 作者:考证青年

常用文件函数总结

文章目录 一.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

文件开始处

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了