王清欢Randy 王清欢Randy
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
  • C语言基础

    • 数据类型
    • 指针与字符串
    • 结构类型
    • 链表
    • 程序结构
    • 文件
      • 6.1文件
        • 底层操作
  • C++面向对象编程

    • C++面向对象

      • 从 C 到 C++
      • C++ 类和对象基础
      • C++ 构造函数与析构函数
      • C++ 类和对象提高
      • 运算符重载
      • C++ 继承
      • C++ 多态
    • C++ STL

      • C++ 输入输出流
      • C++ 泛型编程
      • C++ string类
      • C++ 标准模板库 STL 概述
      • C++ 标准模板库 STL 顺序容器
      • C++ 标准模板库 STL 函数对象
      • C++ 标准模板库 STL 关联容器
      • C++ 标准模板库 STL 容器适配器
    • C++ 新特性

      • C++11 新特性
  • C&Cpp学习笔记
  • C语言基础
王清欢
2023-11-18
目录

文件

# 文件与底层操作

# 6.1文件

格式化输入输出

  • printf("%[flags][width][.prec][hlL]type")

  • scanf("%[flag]type")

  • printf和scanf的返回值:读入的项目数,输出的字符数

    #include<stdio.h>
    
    int main(int argc, char const *argv[])
    {
        int number;
        int i = scanf("&i",&number);
        int j = printf("%d\n",number);
        printf("%d::%d",i,j);
        
        return 0;
    }
    

文件的输入输出

  • 运行程序时使用>和<:对文件的输入输出进行文件重定向

  • FILE结构完成文件读写6.1.2

    FILE* fp = fopen("file","r");
    if(fp){
        fscanf(fp,...);
        fclose(fp);size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restric stream);
    }else{
        ...
    }
    
  • 文本文件可以通过more,tail,cat来查看,Unix是文本文件,而DOS是二进制文件

  • 二进制读写

    size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restric stream);
    size_t fwrite(void *restrict ptr, size_t size, size_t nitems, FILE *restric stream);
    //内存位置,内存单元大小,内存单元个数,文件指针
    
  • 在二进制文件中定位

    long ftell(FILE *stream);
    int fseek(FILE *stream, long offset, int whence);
    
  • 二进制文件不可跨平台,多用文本文件

# 底层操作

  • 按位运算符& | ~ ^ << >>,与 或 非 异或 左移 右移

  • 位段

    struct U {
        unsigned int leading : 3;
        unsigned int flag1 : 1;
        unsigned int flag2 : 1;
        int trailing : 11;
    };
    
上次更新: 2023/11/19, 12:55:48
程序结构
从 C 到 C++

← 程序结构 从 C 到 C++→

Theme by Vdoing | Copyright © 2023-2024 Wang Qinghuan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式