文件的相关操作

目录

1.文件名

2.文件的分类:

3.文件的打开与关闭:

4.文件的输入和输出


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!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值