目录
1.文件名
文件路径+文件名主干+文件后缀。
如c:\2022code\test.exe(.exe是文件拓展名,决定了默认打开此文件的方式)。
2.文件的分类:
(1)程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
(2)数据文件:程序运行时读写的数据。
3.文件的打开与关闭:
(1)fopen//打开文件
FILE * fopen ( const char * filename, const char * mode );参数是文件名和打开方式,返回一个FILE*的指针,在使用时要判断是否为空指针。
打开方式常用的有:
方式 | 含义 | 注意 |
‘w’(write) | 只写 | 若文件存在,则会销毁文件里的内容重新写入数据。若文件不存在,则会创建一个新文件 |
‘r’ (read) | 只读 | 若文件不存在,则出错 |
'rw' | 以二进制的形式写入数据 | 若文件不存在,则创建新文件 |
‘rb’ | 以二进制的形式 | 若文件存在,则会销毁文件里的内容重新写入数据。若文件不存在,则会创建一个新文件 |
如果我想以只读的形式打开一个叫test.exe的文件,即FILE*fopen("test.exe","r")。
前面的返回值其实是一个结构体变量定义的一个结构体类型的指针FILE。
即有一个结构体变量保存了文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。该结构体类型是有系统声明的,取名FILE,通过一个FILE的指针来维护这个FILE结构的变量。
每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
(2)fclose//关闭文件 int fclose ( FILE * stream );参数是结构体指针,注意关闭文件后把文件指针设为空指针。
代码演示如下
#include <stdio.h>
int main ()
{
FILE * pf;
//打开文件
pf = fopen ("myfile.txt","w");
//文件操作
if (pf!=NULL)
{
fputs ("fopen example",pf);
//关闭文件
fclose (pf);
pf=NULL;
}
return 0;
}
4.文件的输入和输出
按顺序读写:
函数 | 适用范围 | 功能 |
int fgetc( FILE *stream ); | 所有输入流 | 从一个文件中得到一个字符,返回得到字符的ASIC码值 |
int fputc( int c, FILE *stream ); | 所有输出流 | 写一个字符到一个文件中 |
char *fgets( char *string, int n, FILE *stream ); | 所有输入流 | 从文件中得到一行数据,放入到char*指向的空间中,n表示读取字符的最大个数 |
int fputs( const char *string, FILE *stream ); | 所有输出流 | 把一行数据写到文件中 |
向文件中写入字符,代码演示如下:
int main()
{
FILE* pf = fopen("test.exe", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//写一个字符
char ch = 'I';
fputc(ch,pf);
//写一行
fputs("win!!!", pf);
fclose(pf);
pf = NULL;
return 0;
}
从文件中读取字符,代码演示如下:
int main()
{
char arr[256] = { 0 };
FILE* pf = fopen("test.exe", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
读取一个字符
//int ch = fgetc(pf);
//printf("%d\n", ch);
//读一行数据放入数组arr中
fgets(arr, 255, pf);
printf("%s", arr);
fclose(pf);
pf = NULL;
return 0;
}
以上就是文件的相关操作,ending!!!