C-文件操作

fopen、fgetc


#include <stdio.h>

int main()
{

    // 使用fopen函数打开或者创建文件,返回文件指针
    FILE * fp;

    // 以只读的方式打开文件,如果文件不存在则报错
    // fp = fopen("./file.txt","r");

    // 以只写的方式打开文件,如果文件不存在则创建 ,如果文件存在则清空
    // fp = fopen("./file.txt", "w");

    // 以只写的方式打开文件,如果文件不存在则创建,如果文件存在则追加
    // fp = fopen("./file.txt","a");


    fp = fopen("./file.txt","r");         // hello

    if(fp == NULL)
    {
        printf("fail to fopen\n");
        return -1;
    }

    // 使用fgetc从文件中读取一个字符
    // int c = fgetc(fp);
    // printf("c = [%c] - %d\n", c, c);     // c = [h] - 104
    //
    // c = fgetc(fp);
    // printf("c = [%c] - %d\n", c, c);     // c = [e] - 101


    // 注意:文件的每一行结束的位置都有一个标识,是一个换行符,称之为行结束符
    // fgetc可以读取到行结束符

    int c ;
    while ( (c = fgetc(fp))  !=  EOF ) {
        printf("c = [%c] - %d\n", c, c);
    }
    // c = [h] - 104
    // c = [e] - 101
    // c = [l] - 108
    // c = [l] - 108
    // c = [o] - 111


    // 使用fclose关闭文件
    fclose(fp);

    return 0;
}


通过fputc函数向文件写入一个字符

#include <stdio.h>

int main()
{

    // 使用fopen函数打开或者创建文件,返回文件指针
    FILE * fp;

    fp = fopen("./file.txt","w");

    if(fp == NULL)
    {
        printf("fail to fopen\n");
        return -1;
    }

    // 通过fputc函数向文件写入一个字符
    fputc('w',fp);
    fputc('h',fp);
    fputc('a',fp);
    fputc('t',fp);
    fputc('\n',fp);
    fputc('o',fp);

    // 使用fclose关闭文件
    fclose(fp);

    return 0;
}

fread 、 fwrite

#include <stdio.h>

typedef struct{
    int a;
    int b;
    char c;
}MSG;

int main()
{

    // 使用fopen函数打开或者创建文件,返回文件指针
    FILE * fp;

    fp = fopen("./file.txt","w+");

    if(fp == NULL)
    {
        printf("fail to fopen\n");
        return -1;
    }

    // 使用fwrite向文件写入一个结构体
    MSG msg[4] = {1, 2, 'a', 3, 4, 'b', 5, 6, 'c', 7, 8, 'd'};

    fwrite(msg, sizeof(MSG), 4, fp);

    // 将文件的偏移量设置为文件的起始位置
    rewind(fp);

    MSG rcv[4];
    fread(rcv, sizeof(MSG), 4, fp);

    int i;
    for(i = 0; i<4; i++)
    {
        printf("%d - %d - %c\n", rcv[i].a, rcv[i].b, rcv[i].c);
    }
    // 1 - 2 - a
    // 3 - 4 - b
    // 5 - 6 - c
    // 7 - 8 - d

    // 使用fclose关闭文件
    fclose(fp);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值