文件IO操作

一、打开文件

cpp 复制代码
#include<stdio.h>
int main()
{
    /*
    const char *__restrict__ __filename 要打开的文件名
    const char *__restrict__ __modes 要打开文件的访问模式
    【1】r:只读模式
    【2】w:只写模式,如果文件存在清空文件 如果文件不存在创建文件
    【3】a:只追加写模式,如果文件存在末尾追加写 如果不存在创建新文件
    【4】r+:读写模式 文件必须存在 写入是从头一个一个覆盖
    【5】w+:读写模式 如果文件存在清空文件 如果不存在创建新文件
    【6】a+:读追加写模式 如果文件存在末尾追加写 如果不存在创建文件
    return :FILE* 结构体指针 表示一个文件 
            报错返回NULL
    FILE *fopen(const char *__restrict__ __filename, const char *__restrict__ __modes)
    
    */
    
    char *filename="io.txt";
    char *modes="w";
    FILE *ioFile = fopen(filename,modes);
    if (ioFile == NULL)
    {
        printf("打开失败\n");
    }
    else
    {
        printf("打开成功\n");
    }
    
    return 0;
}

MakeFile文件

cpp 复制代码
CC:=gcc
fopen_test:fopen_test.c
#$(CC) -o $@ $^ 表示gcc -o fopen_test fopen_test.c
	-$(CC) -o $@ $^ 
#./$@ 表示./fopen_test
	-./$@
#rm ./$@ 表示rm ./fopen_test
	-rm ./$@

二、关闭文件

cpp 复制代码
#include<stdio.h>
int main()
{
    /*
    const char *__restrict__ __filename 要打开的文件名
    const char *__restrict__ __modes 要打开文件的访问模式
    【1】r:只读模式
    【2】w:只写模式,如果文件存在清空文件 如果文件不存在创建文件
    【3】a:只追加写模式,如果文件存在末尾追加写 如果不存在创建新文件
    【4】r+:读写模式 文件必须存在 写入是从头一个一个覆盖
    【5】w+:读写模式 如果文件存在清空文件 如果不存在创建新文件
    【6】a+:读追加写模式 如果文件存在末尾追加写 如果不存在创建文件
    return :FILE* 结构体指针 表示一个文件 
            报错返回NULL
    FILE *fopen(const char *__restrict__ __filename, const char *__restrict__ __modes)
    
    */
    
    char *filename="io.txt";
    char *modes="w";
    FILE *ioFile = fopen(filename,modes);
    if (ioFile == NULL)
    {
        printf("打开失败\n");
    }
    else
    {
        printf("打开成功\n");
    }
    
    /*
    FILE *__stream 需要关闭的文件
    return: 成功返回0 失败返回EOF(负数)通常关闭文件失败会直接报错
    int fclose(FILE *__stream)
    */

    int result=fclose(ioFile);
    if (result == 0)
    {
        printf("关闭文件成功\n");
    }
    else if(result == EOF)
    {
        printf("关闭文件失败\n");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fclose_test:fclose_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

三、写入字节fputc

cpp 复制代码
#include<stdio.h>
int main()
{
    /*
    const char *__restrict__ __filename 要打开的文件名
    const char *__restrict__ __modes 要打开文件的访问模式
    【1】r:只读模式
    【2】w:只写模式,如果文件存在清空文件 如果文件不存在创建文件
    【3】a:只追加写模式,如果文件存在末尾追加写 如果不存在创建新文件
    【4】r+:读写模式 文件必须存在 写入是从头一个一个覆盖
    【5】w+:读写模式 如果文件存在清空文件 如果不存在创建新文件
    【6】a+:读追加写模式 如果文件存在末尾追加写 如果不存在创建文件
    return :FILE* 结构体指针 表示一个文件 
            报错返回NULL
    FILE *fopen(const char *__restrict__ __filename, const char *__restrict__ __modes)
    
    */
    
    char *filename="io.txt";
    char *modes="w";
    FILE *ioFile = fopen(filename,modes);
    if (ioFile == NULL)
    {
        printf("打开失败\n");
    }
    else
    {
        printf("打开成功\n");
    }
    
    /*
    int __c ASCII码对应的char
    FILE *__stream 打开的一个文件
    return:成功返回的char 失败返回EOF
    int fputc(int __c, FILE *__stream)
    */

    int put_result=fputc(97,ioFile);
    if (put_result==EOF)
    {
        printf("写入文件失败\n");
    }
    else
    {
        printf("写入文件成功\n");
    }
    

    /*
    FILE *__stream 需要关闭的文件
    return: 成功返回0 失败返回EOF(负数)通常关闭文件失败会直接报错
    int fclose(FILE *__stream)
    */

    int result=fclose(ioFile);
    if (result == 0)
    {
        printf("关闭文件成功\n");
    }
    else if(result == EOF)
    {
        printf("关闭文件失败\n");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fputc_test:fputc_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

四、写入字符串fputs

cpp 复制代码
#include<stdio.h>
int main()
{
    /*
    const char *__restrict__ __filename 要打开的文件名
    const char *__restrict__ __modes 要打开文件的访问模式
    【1】r:只读模式
    【2】w:只写模式,如果文件存在清空文件 如果文件不存在创建文件
    【3】a:只追加写模式,如果文件存在末尾追加写 如果不存在创建新文件
    【4】r+:读写模式 文件必须存在 写入是从头一个一个覆盖
    【5】w+:读写模式 如果文件存在清空文件 如果不存在创建新文件
    【6】a+:读追加写模式 如果文件存在末尾追加写 如果不存在创建文件
    return :FILE* 结构体指针 表示一个文件 
            报错返回NULL
    FILE *fopen(const char *__restrict__ __filename, const char *__restrict__ __modes)
    
    */
    
    char *filename="io.txt";
    char *modes="w";
    FILE *ioFile = fopen(filename,modes);
    if (ioFile == NULL)
    {
        printf("打开失败\n");
    }
    else
    {
        printf("打开成功\n");
    }
    
    /*
    const char *__restrict__ __s  需要写入的字符串
    FILE *__restrict__ __stream   需要写入的文件
    return :成功返回非负整数(0,1) 失败返回EOF
    int fputs(const char *__restrict__ __s, FILE *__restrict__ __stream)
    */

    int putsR=fputs("love letter\n",ioFile);
    if (putsR == EOF)
    {
        printf("写入字符串失败\n");
    }
    else
    {
        printf("写入字符串%d成功\n",putsR);
    }


    /*
    FILE *__stream 需要关闭的文件
    return: 成功返回0 失败返回EOF(负数)通常关闭文件失败会直接报错
    int fclose(FILE *__stream)
    */

    int result=fclose(ioFile);
    if (result == 0)
    {
        printf("关闭文件成功\n");
    }
    else if(result == EOF)
    {
        printf("关闭文件失败\n");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fputs_test:fputs_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

五、读取字节fgets

cpp 复制代码
#include<stdio.h>
int main()
{
    //打开文件
    FILE* ioFile = fopen("io.txt","r");
    if (ioFile == NULL)
    {
        printf("不能用只读模式打开不存在文件\n");
    }
    
    //读取文件内容
    /*
    FILE *__stream 打开的文件
    return:读取到的一个字节 如果出现错误或的到文件的末尾返回EOF
    int fgetc(FILE *__stream)
    */
   char c = fgetc(ioFile);

   while(c != EOF)
   {
    printf("%c",c);
    c= fgetc(ioFile);
   }

   printf("\n");
    
    //关闭文件
    int closeR = fclose(ioFile);
    if (closeR == EOF)
    {
        printf("关闭文件失败");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fgetc_test:fgetc_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

六、读取字符串fgets

cpp 复制代码
#include<stdio.h>
int main()
{
    //打开文件
    FILE* ioFile = fopen("io.txt","r");
    if (ioFile == NULL)
    {
        printf("不能用只读模式打开不存在文件\n");
    }
    
    //读取文件内容
    /*
    char *__restrict__ __s 接收读取到的字符串
    int __n 接收数据的长度
    FILE *__restrict__ __stream 打开要读取的文件
    retrun 成功返回字符串 失败返回NULL 
    char *fgets(char *__restrict__ __s, int __n, FILE *__restrict__ __stream)
    */
   char buffer[100];
   while (fgets(buffer,sizeof(buffer),ioFile))
   {
    printf("%s",buffer);
   }

   printf("\n");
    
    //关闭文件
    int closeR = fclose(ioFile);
    if (closeR == EOF)
    {
        printf("关闭文件失败");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fgets_test:fgets_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

七、格式化读取fscanf

cpp 复制代码
#include<stdio.h>
int main()
{
    //打开文件
    FILE* ioFile = fopen("io.txt","r");
    if (ioFile == NULL)
    {
        printf("不能用只读模式打开不存在文件\n");
    }
    
    //读取文件内容
    /*
    FILE *__restrict__ __stream 打开的文件
    const char *__restrict__ __format 带有格式化的字符串(固定格式接收)
    ...可变参数:填写格式化的字符串(接收数据前声明的变量)
    return:成功匹配的参数的个数 如果匹配失败返回i0 如果失败报错或者文件末尾返回EOF
    int fscanf(FILE *__restrict__ __stream, const char *__restrict__ __format, ...)
    */

    char name[50];
    int age;
    char wife[50];
    int scanfR = fscanf(ioFile,"%s %d %s",name,&age,wife);
    while(scanfR != EOF)
    {
        printf("成功匹配到的参数有%d个\n",scanfR);
        printf("%s在%d岁的时候爱上了%s\n",name,age,wife);
        scanfR = fscanf(ioFile,"%s %d %s",name,&age,wife);
    }

    printf("\n");
    
    //关闭文件
    int closeR = fclose(ioFile);
    if (closeR == EOF)
    {
        printf("关闭文件失败");
    }
    

    return 0;
}

MakeFile文件

cpp 复制代码
fscanf_test:fscanf_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@

八、标准输入输出

cpp 复制代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char *ch=malloc(100);
    int n;
    //从标准输入中读取数据
    fgets(ch,100,stdin);
    printf("你好:%s\n",ch);

    //标准输出
    fputs(ch,stdout);

    //错误输出
    fputs(ch,stderr);
    return 0;
}

MakeFile文件

cpp 复制代码
stdin_out_err_test:stdin_out_err_test.c
	-$(CC) -o $@ $^ 
	-./$@
	-rm ./$@
相关推荐
2301_809051146 小时前
Linux 网络编程 学习笔记
linux·网络·学习
坤昱7 小时前
cfs调度类深入解刨——最新内核细节分析2
linux·服务器·cfs·cfs调度·eevdf调度·eevdf·kernel 7.1
艾莉丝努力练剑7 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约7 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
eggcode7 小时前
【Qt学习】Linux(ARM架构)在线安装Qt6.x
linux·qt·学习·arm
wkd_0077 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
mixboot8 小时前
Linux 进程工作目录查看利器:pwdx 命令详解
linux·运维·服务器
旺仔来了9 小时前
不联网的Linux下部署python环境
linux·开发语言·python
Irene199111 小时前
WSL 切换磁盘后验证完整性(MobaXterm、Powershell、WSL 的区别)
linux·wsl·mobaxterm
扛枪的书生12 小时前
Keepalived 学习总结
linux