20fopen/fclose、fgetc/fputc、fgets/fputs、fread/fwrite

fopen函数声明

FILE * fopen(const char *path,const char *mode)
打开一个已经存在的文件,并返回这个文件的文件指针,或者创建一个文件,然后打开这个文件,并返回这个文件的文件指针
path :文件的路径,可以是相对路径。也可以是绝对路径
mode:打开模式,r、w、a、+等
r 只读:如果文件不存在返回NULL,存在则返回文件指针
w只写:如果文件不存在,则以指定文件名创建此文件,并打开文件;如果文件存在,则清空文件内容,再打开文件,返回指针,如果文件无法打开,则返回NULL
a追加:如果文件不存在,则以指定文件名创建此文件,并打开文件;如果文件存在,则在文件结尾处追加内容
+:同时以读写的方式打开文件

fclose函数声明

int fclose (FILE*fp)
关闭fp所代表的文件,一个文件只能关闭一次,关闭之后无法对文件进行操作
成功返回0,失败返回非0

    char* path = "C:\\Users\\Administrator\\Desktop\\临时.txt";
    FILE* fp = fopen(path, "w+");
    if (fp == NULL) {
        printf("文件不存在\n");
    }
    else {
        printf("文件打开成功\n");
    }

    int isClose=fclose(fp);
    if (isClose == 0) {
        printf("文件关闭成功\n");
    }
    else {
        printf("文件关闭失败\n");
    }
fgetc函数声明

一次读一个字符
int fgetc(FILE * fp)
从fp所代表的文件中读取一个字节,将字节值返回
以txt方式:读至文件末尾返回EOF,EOF是stdio.h文件中定义的常量,值为-1
以二进制方式:读至文件结尾以feof(FILE *fp)判断结尾
feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值;文件未结束:返回0值)。

fputc函数声明

一次写一个字符
int fputc(int c,FILE * fp)
将C的值写入fp代表的文件中

    char* path = "C:\\Users\\Administrator\\Desktop\\临时.txt";
    char* path2 = "C:\\Users\\Administrator\\Desktop\\临时2.txt";
    FILE* fp = fopen(path, "r+");
    FILE* fp2 = fopen(path2, "w+");
    if (fp == NULL) {
        printf("文件不存在\n");
    }
    else {
        printf("文件打开成功\n");
        int ch;
        while ((ch=fgetc(fp)) != EOF) {
            fputc(ch, fp2);     //stdout标准输出设备
        }
    }

    fclose(fp);
    fclose(fp2);
fgets函数声明

一次读一个字符串
char fgets(char * s,int size,FILE *fp)
从fp 所代表的文件中读取字符,在读取的时候碰到换行符或者是碰到文件的末尾停止读取,或者是读取了size-1个字节停止读取,在读取的内容后面会加一个\0,作为字符串的结尾
返回值:
成功返回目的数组的首地址,即s
失败返回NULL

fputs函数声明

一次写一个字符串
int fputs(char * s,FILE *fp)
将s指向的字符串,写入到fp代表的文件中
返回值:
成功返回写入的字节数
失败返回-1

    char* path = "C:\\Users\\Administrator\\Desktop\\临时.txt";
    char* path2 = "C:\\Users\\Administrator\\Desktop\\临时2.txt";
    FILE* fp = fopen(path, "r");
    FILE* fp2 = fopen(path2, "w");
    if (fp == NULL) {
        printf("文件不存在\n");
    }
    else {
        printf("文件打开成功\n");
        char ch[200];
        fgets(ch, 100, fp);
        fputs(ch, fp2);     //stdout标准输出设备
    
    }

    fclose(fp);
    fclose(fp2);
fread函数声明

size_t fread(void * ptr,size_t size,size_t count,FILE *fp)
从 fp代表的文件中读取数据,一块是size字节,共count块,存放到ptr指向的内存中
返回值:实际读取到的块数

fwrite函数声明

size_t fwrite(void *ptr,size_t size,size_t count,FILE *fp)
将ptr指向的内存中的数据按块写入到fp代表的文件中,一块是size字节,共count块;
返回值:实际写入的块数

    char* path = "C:\\Users\\Administrator\\Desktop\\临时.txt";
    FILE* fp=fopen(path,"wb+");
    if (fp == NULL) {
        printf("文件不存在");
    }
    else {
        for (size_t i = 0; i < 2; i++)
        {

            printf("请输入城市名称,人口(万),等级\n");
            scanf("%s %d %d", cities1[i].name, &(cities1[i].num), &(cities1[i].level));
        }
        fwrite(cities1, sizeof(struct city), 2, fp);
        rewind(fp);//将文件指针回到头部

        fread(cities2, sizeof(struct city), 2, fp);
        
        printf("%s--%d--%d\n", cities2[0].name, cities2[0].num, cities2[0].level);
        printf("%s--%d--%d\n", cities2[1].name, cities2[1].num, cities2[1].level);
        fclose(fp);
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ^函数重载的匹配: 当函数名被重载后,函数的匹配过程:首先寻找能精确匹配的函数,如果未能精确匹配,则尝试...
    鲁大帅阅读 1,143评论 0 1
  • 0. 引言 什么是文件:文件通常是在磁盘或固态硬盘上一段已命名的存储区。C把文件看做是一系列连续的字节,每个字节都...
    Kop李小阳阅读 557评论 0 0
  • 存储类别有一个共同之处: 在确定用哪种存储类别后,根据已制定好的内存管理规则, 将自动选择其作用域和存储期。 然而...
    4d29e26b2bce阅读 506评论 0 0
  • 目标:掌握用C语言编程的基本技能内容:1. 指针的定义   2. 指针的类型   3. 指针的指向内容   4. ...
    CyraChen阅读 215评论 0 1
  • 指针指针的定义指针的类型指针的指向内容指针的运算数组与指针指针与函数动态分配内存结构体文件读写头文件与实现文件实例...
    零散的蒲公英阅读 220评论 0 0

友情链接更多精彩内容