当前位置: 首页 > news >正文

C语言基础知识--文件读写(一)

// 内存分配
// 内核空间:用户代码不能读写
// 栈:局部变量,形式参数
// 内存映射段:文件映射、动态库、匿名映射
// 堆:主动申请内存,都在堆区
// 数据段(静态区):全局变量、静态变量、静态局部变量
// 代码段:可执行代码/只读常量// 文件操作
// 为什么使用文件 ?
// 1. 存储数据;数据的相对持久化的保存,文件是存在硬盘上的
// 2、程序文件:源程序文件.c、目标文件.obj、可执行文件.exe
//   数据文件: 文件的内容不一定都是程序,可能是程序运行时读取的数据,或者输出到文件中的内容。
// 3、文件的唯一标识 ,文件名 :文件路径 +  文件名 + 文件后缀
// 4、根据数据的组织形式,文本文件和二进制文件
// 5、数据在内存中1️以二进制的形式存储,如果不加转换放到外存的文件中 ,就是二进制文件
// 6、如果在存储前,添加转换,那么就是文本文件
// 7、wb 二进制写的方式// int main() {
//    int a = 10;
//    FILE *fp = fopen("binary.txt", "wb");
//    fwrite(&a, sizeof(int), 1, fp);
//    fclose(fp);
//    fp = NULL;
//    return 0;
// }// 8、文件的操作和关闭
// 1、流: 文件的输入输出,需要输出到不同的外部设备,抽象出流的概念
// 2、打开读写、关闭
// 3、标准流:
// stdin : 标准输入
// stdout : 标准输出
// stderr  : 错误输出
// 三个流的类型是 FILE * ,称为文件指针// 4、文件指针: FILE *
// 缓冲系统中 ,关键的概念是 文件类型指针 ,简称 “文件指针”
// 用来保存文件的信息 ,系统创建一个文件信息区域结构体,由系统命名FILE
// 文件的打开和关闭
// fopen 函数
// fopen (const char *filename, const char *mode)
// 文件的打开方式:
// r 读文件:文件不存在则创建,存在则打开
// w 写文件:文件不存在则创建,存在则清空
// a 追加文件:文件不存在则创建,存在则追加
// rb 二进制读文件:文件不存在则创建,存在则打开
// wb 二进制写文件: 文件不存在则创建,存在则清空
// ab 二进制追加文件:文件不存在则创建,存在则追加
// r+// int main() {
//  // 打开文件
//    FILE *fp = fopen ("readtest.txt", "w");
//  // 打开文件成功返回有效指针,如果失败null
//  // // 如果不在当前路径下要写绝对路径: /Users/l/Desktop/code/readtest.txt
//  // . 表示当前路径 .. 表示上一级路径: .\\..\\readtest.txt
//    if (fp != NULL) {
//      // 写入文件
//      // 生成随机时间写入文件
//      srand ((unsigned int)time (NULL));
//       int time = rand ();
//       fprintf (fp, "time = AA%d\n", time);
//       // fprintf (fp, "hello world\n");
//       fclose (fp);
//    }
//   else {
//     perror ("fopen");
//     return 1;
//   }
//   // 关闭文件
//   fclose (fp);
//   fp  = NULL;
// }
// 读取文件// fgetc :读字符
// fputc :写字符
// fgets :读字符串
// fputs :写字符串
// fscanf :格式化读
// fprintf :格式化写// 顺序读写
// fgetc: 读取正常返回读取到的字符的ascll值,返回EOF表示文件结束
// fputc: 写入正常返回写入的字符的ascll值,返回EOF表示文件结束// int main () {
//  // 打开文件
//    FILE *fp = fopen ("test.txt", "r");
//    if (fp == NULL) {
//     perror ("fopen");
//    }
//  // 读文件
//    int i = 0;
//    for (i = 0; i < 10; i++) {
//       int ch = fgetc (fp);
//       if (ch == EOF) {
//          break;
//       }
//       printf ("%c\n", ch);
//    }
//  // 关闭文件
//    fclose (fp);
//    fp = NULL;
//    return 0;
// }// int main() {
//    int ch = fgetc (stdin); // 标准输入,从键盘读入字符
//    fputc (ch, stdout); // 标准输出
//    return 0;
// }
//
http://www.dtcms.com/a/277934.html

相关文章:

  • RAID磁盘冗余技术深度解析
  • WEB渗透
  • 【LeetCode100】--- 6.三叔之和【思维导图---复习回顾】
  • 基于Java日志平台的访问链路追踪实战
  • JAVA并发——synchronized的实现原理
  • C#特性:从元数据到框架基石的深度解析
  • 强化学习初探及OREAL实践
  • Word中的批注显示与修订显示
  • 【vs2022】 error C2338: Unicode support requires compiling with /utf-8
  • 时间的弧线,逻辑的航道——标准单元延迟(cell delay)的根与源
  • [附源码+数据库+毕业论文+答辩PPT+部署教程+配套软件]基于SpringBoot+MyBatis+MySQL+Maven+Vue实现的交流互动管理系统
  • 基于Springboot+UniApp+Ai实现模拟面试小工具四:后端项目基础框架搭建下
  • 长上下文能力:FlashAttention vs. RingAttention
  • 协程的 callbackFlow 函数的使用和原理
  • 认识数据分析
  • 第一,二次作业
  • LAN-401 linux操作系统的移植
  • DHS及HTTPS工作过程
  • 【Claude Code】 AI 编程指南
  • sql初学见解
  • 多线程死锁
  • 飞算Java AI开发助手:引领智能编程新风尚
  • Llama系列:Llama1, Llama2,Llama3内容概述
  • 【读书笔记】《C++ Software Design》第九章:The Decorator Design Pattern
  • HTML 基本骨架
  • [GWCTF 2019]我有一个数据库
  • SOMEIP协议与测试
  • LeetCode 2401.最长优雅子数组
  • C++数组指针与函数指针
  • 为什么要有延时回调?