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

Linux-文件基本操作1

1.localtime 函数

struct tm *localtime(const time_t *timep);
参数:
返回值:
  time_t time(time_t *t) //可以获得一个时间的秒数 
   
   time_t t;
   time(&t);
   localtime(&t);

  
  struct tm {
    int tm_sec;     /* Seconds (0-60))*/
    int tm_min;     /* Minutes (0-59)*/
    int tm_hour;    /* Hours(0-23)*/
    int tm_mday;    /* Day of the month (1-31) */
    int tm_mon;     /* Month (0-11)*/
    int tm_year;    /* Year - 1900 */
    int tm_wday;   /* Day of the week (0-6,Sunday = 0)*/
    int tm_yday;   /* Day in the year (0-365,1 Jan = 0)*/
    int tm_isdst;  /* Daylight saving time */
}
2.缓存

缓存的设计:
缓存 设计的目的提高效率  
本质上来说 ---缓存其实就是一块内存空间 

行缓冲,1k, terminal,主要用于人机交互stdout
    
    缓存区满或者遇到\n刷新    1024
                行缓存多是关于终端的一些操作
                1.遇到\n刷新
                2.缓存区满刷新
                3.程序结束刷新
                4.fflush刷新  fflush(stdout);


                
全缓冲,4k,主要用于文件的读写
    缓存区满刷新缓存区 4096
            对普通文件进行标准IO操作,建立
            的缓存一般为全缓存
            刷新条件:
                1.缓存区满刷新
                2.程序结束刷新
                3.fflush来刷新  fflush(fp);
无缓冲,0k  主要用于出错处理信息的输出 stderr 
    不对数据缓存直接刷新
    printf();==>>stdout 
    fprintf(strerr,"fopen error %s",filename);
                界面交互    出错处理
使用gdb查看,FILE结构体,或使用写入数据测试缓冲区。
缓冲区的大小是可以设置

linux下缓存设计:
交互 --- 行缓存 
文件 --- 全缓存 
出错 --- 不缓存 

./a.out < main.c   //< 表示输入重定向 
./a.out > main.c   //> 表示输出重定向 

3.fread/fwrite //二进制读写函数 按对象读写

#include <stdio.h>
size_t  fread(      void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:
     二进制流的读/写
参数:
   @ptr   表示存放数据的空间的地址 
   @size  要操作的单个元素(对象)的大小
   @nmemb 要操作的元素(对象)的个数 
   @stream 要操作的文件 
返回值:
   成功 返回的是 成功操作到的对象的个数 
   失败 0
     到达文件结尾 返回 0
     
应用:
   主要 应用在 文件中 有固定格式的  场景 

练习:
   将3个学生的信息,写到文件中 
   之后,
   从文件中读出学生信息,打印 

   
4.文件偏移量:
   【1】rewind
   int  fseek(FILE* stream,long offset,int whence);
   功能:
       定位文件 
   参数:
      @stream  表示要操作文件 
      @offset  表示文件偏移量 
      @whence  定位的参考点 
               SEEK_SET //相对于文件开头的 
                  offset >=0 
               SEEK_CUR //相对于当前位置
                  offset>=0
                  offset<0   //不能超过这个文件开头
               SEEK_END //相对于文件末尾 
                  offset < 0  //不能超过这个文件开头
                  offset >= 0 //可以  --- 创建 空洞 文件
   返回值:
      成功 0
      失败 -1
      
                             
     【2】使用方法

     fseek(fp,100,SEEK_SET);//
     fseek(fp,0,SEEK_SET);//定位到开头 
     fseek(fp,0,SEEK_END);//定位到末尾
     
     【3】用来创建空洞文件: 
     1.做偏移 
     2.写操作 

(1)fseek实现空洞文件

(2)8.产生1.txt的空洞文件

(3)产生空洞文件并cp

(4)复制部分简化

     
   5.long ftell(FILE*stream);
   功能:
       获得当前文件的偏移量 
   void rewind(FILE*stream);
   功能:
       将文件偏移量设置到文件开头 
       
       
  获得某个文件的大小:
  1. fseek(fp,0,SEEK_END);//定位到末尾
  2. long len =ftell(fp); 
  
 
 


   

相关文章:

  • 空间复杂度O(m) O(n) O是什么,m是什么,n是什么
  • 使用多种机器学习算法进行鸢尾花分类
  • Deepseek本地部署和网页版本区别
  • Redis 的缓存雪崩、缓存穿透和缓存击穿详解,并提供多种解决方案
  • 据称苹果与阿里巴巴将合作为中国iPhone用户开发AI功能
  • 第一章:认识Tailwind CSS - 第一节 - Tailwind CSS 的核心理念
  • DBeaver clickhouse 时区不对 时间少了8小时
  • 【广州大学主办,发表有保障 | IEEE出版,稳定EI检索,往届见刊后快至1个月检索】第二届电气技术与自动化工程国际学术会议 (ETAE 2025)
  • 8、《5分钟构建RESTful API:Spring Boot Web开发入门》
  • 本地部署DeepSeek后的调用与删除全攻略
  • 计算机网络知识速记:TCP 与 UDP
  • 在 debian 12 上安装 mysqlclient 报错
  • Gemini Thinks Faster
  • 10 . Docker 中的 DockerFile 解析(各种指令说明)
  • 安装mysql5.7报错 mysqld.exe-系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能 会解决此问题。 确定
  • /etc/sysctl.conf——系统的配置文件
  • #define宏与编译时定义的本质对决:从const常量到typedef的类型安全演进
  • 第二章:基础概念精讲 - 第一节 - Tailwind CSS 响应式设计系统
  • Okay, But Please Don’t Stop Talking
  • Flutter编译问题记录
  • 特朗普与普京开始电话会谈,稍后将致电泽连斯基
  • 学人、学术、学科、学脉:新时代沾溉下的中国西方史学史
  • 广东进入“倒水模式”,珠江防总、珠江委已启动Ⅳ级应急响应
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 商务部:对原产于美国、欧盟、台湾地区和日本的进口共聚聚甲醛征收反倾销税
  • 关税影响下沃尔玛想涨价,特朗普施压:自行承担,别转嫁给顾客