机试第7天 可能用到的文件操作

半腔热情 提交于 2021-01-30 09:44:09

1.文件的概述

定义:文件是指存储在外部介质(例如磁盘)上的数据的集合

2.文件操作

2.1 文件的打开

函数原型:

FILE *fopen(const char *filename,const char *mode) //filename是文件名,mode是决定文件的用途

例如:

FILE *fp;
fp=fopen("test.txt""r")//用fp指向读取的test.txt文件,因为函数原型中是const char*类型,所以有双引号      

文件打开方式分为几类:

“r” 打开一个用于读取的文本文件;

“w“创建一个用于写入的文本文件;

"a"附加到一个文本文件;

"r+"或"a+"打开一个用于读/写的文本文件;

"w+"创建一个用于读写的文本文件;

判断打开有哪种错误的函数perror("")

函数原型是:

void perror(const char *str);   //perror()函数打印str(字符串)和一个相应的执行定义的错误消息到全局变量errno中.

举例:

if(fp==NULL){
   
   
		perror("fp");           //perror函数用于判断打开文件出现哪种错误
		return -1;
	}

输出结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DydbDMYo-1611834621626)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210128155913842.png)]

2.2 文件关闭

fclose(fp),文件的打开与关闭与内存的申请malloc和释放free一样;

由于打开文件后会占据内存,且打开文件有上限,所以就要fclose

函数原型:

int fclose(FILE *p);    //fclose关闭文件,释放文件缓冲区的空间,fclose()执行成功时返回0,否则返回EOF.

由于无法显示结果,所以没有输出举例

2.3 文件的读写

读:(fgetc,fgets)

1.fgetc(fp)

从文件中读取一个字符

c=fgetc(fp);
printf("%c",c);     //打印fgetc从fp中读取的字符c

函数原型:

int fgetc(FILE *p);        //fgetc读取成功时返回*p的下一个字符,如果到达文件尾或者发生错误则输出EOF

2.fgets

函数原型:

char *fgets( char *str, int num, FILE *stream );//函数fgets()从给出的文件流中读取(num - 1)个字符并且把它们转储到str(字符串)中.

举例:

FILE *fp;
fp=fopen("test.txt","r+");//test.txt中存的字符为"hello!"
char a[10];
fgets(a,10,fp);//输出时a[10]为"hello!"

3.fscanf:

函数原型:

int fscanf( FILE *stream, const char *format, ... );//由scanf变化而来

对比scanf函数和fscanf函数:(与printffprintf相似)

fscanf scanf
int fscanf( FILE *stream, const char *format, ... ); int scanf( const char *format, ... );

唯一不同之处在于fscanf中有一个文件结构体指针。

写:(fputc,fputs)

1.fputc('字符',fp)

函数原型:

int putc(int ch,FILE *fp);  //把给出的字符ch写到fp中. 返回值是字符, 发生错误时返回值是EOF. 

2.fputs

函数原型:

int fputs(const char *str,FILE *fp);//fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.

举例:

FILE *fp;                  //定义一个文件类型的结构体数组
char a[10]="hello";        //定义一个字符串,另一种方式char a[10]={'h','e','l',...};
fp=fopen("test.txt","w+"); //创建一个可以用于读写的文本文件
fputs(a,fp);               //将字符串a写入fp中

结果:存代码的文件下有了一个新的文件test.txt,在这个文件中的字符串为hello!

3.fprintf

函数原型:

 int fprintf( FILE *stream, const char *format, ... );

示例:

char name[20] = "Mary";
FILE *out;
out = fopen( "output.txt", "w" );
if( out != NULL )
    fprintf( out, "Hello %s\n", name );

在源代码所在的文件中,output.txt文件中就会有Hello Mary的字样。

点击即可查看我的CSDN博客

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!