day 21 (重点程序 )

先整理程序

文件拷贝

1.fgetc/fputc

  1 #include<stdio.h>2 int main(void)3 {4     FILE *fsrc = NULL;5     FILE *fdst = NULL;6     char ch = 0;7     fsrc = fopen("src.txt","r");8     if(NULL == fsrc)9     {10         perror("fail to fopen");11         return -1;12     }13     fdst = fopen("dst.txt","w");14     if(NULL == fdst)15     {16         perror("fail to fopen");17         return -1;18     }19     while(1)20     {21         ch = fgetc(fsrc);         //一个一个拷贝过去 fgetc / fputc                               22         if(EOF == ch)23         {24             break;25         }26         fputc(ch,fdst);27     }28     fclose(fsrc);29     fclose(fdst);30 31     return 0;32 }   

2.fgets/fputs

  1 #include<stdio.h>2 3 int main(void)4 {5     FILE *a = NULL;6     FILE *b = NULL;7     char c[4096]={0};8     char *d=NULL;9     a = fopen("src.txt","r");10     if(NULL == a)11     {12         perror("fail to fopen");13         return -1;14     }15     b = fopen("dst.txt","w");16     if(NULL == b)17     {18         perror("fail to fopen");19         return -1;20     }21     while(1)22     {23         d = fgets(c,sizeof(c),a); //一行一行的拷贝 fgets /fputs                                  24         if(NULL == d)25         {26             break;27         }28         fputs(c,b);29     }30 31     fclose(a);fclose(b);32 33 34     return 0;35 }
~               

3.fread / fwrite

  1 #include<stdio.h>2 3 int main(void)4 {5     size_t d =0;6     FILE *a=NULL;7     FILE *b=NULL;8     char c[1500000] = {0};9     a = fopen("src.jpg","r");10     if(NULL == a)11     {12         perror("fail to fopen");13         return -1;14     }15     b = fopen("dst.jpg","w");16     if(NULL == b)17     {18         perror("fail to fopen");19         return -1;20     }21     //两种写法 22 /*  fread(c,sizeof(c),1,a);   //返回值不同 第一种 23                                 //  要么返回 0  要么返回1  即成功或者失败24 */25     while(1)26     {27         d = fread(c,1,sizeof(c),a); //有多大返回多大28         if(0 == d)29         {30             break;31         }32         fwrite(c,1,d,b);33     }34     fclose(a);fclose(b);35 36     return 0;37 }       

4. read /write

 1 #include "head.h"                                                                                2 /*3 int main(void)4 {   5     ssize_t nret = 0;6     int b =0;7     int a =0;8     char c[200000]={0};9     a = open("a.jpg",O_RDONLY);10     if(-1==a)11     {12         perror("fail to open");13         return -1;  14     }15     b=open("b.jpg",O_WRONLY | O_CREAT | O_TRUNC,0664);16     if(-1==b)17     {18         perror("fail to open");19         return -1;  20     }21     while(1)22     {23         nret = read(a,c,sizeof(c));24         if(0 == nret)25         {26              break;27         }28     }29     write(b,c,sizeof(c));30     close(a);close(b);31     return 0;32 }33 */34 int main(int argc,const char *argv[])35 {36     ssize_t nret = 0;   37     int b =0;38     int a =0;39     char c[4096]={0};40     if(argc !=3)41     {   42         fprintf(stderr,"Usage:./a.out afilename bname\n");43         return -1;44     }45     a = open(argv[1],O_RDONLY);46     if(-1==a)47     {48         perror("fail to open");49         return -1;50     }51     b=open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0664);52     if(-1==b)53     {54         perror("fail to open");55         return -1;56     }57     while(1)58     {59         nret = read(a,c,sizeof(c));60         if(nret<=0)61         {62              break;63         }64         write(b,c,nret);65     }66     close(a);67     close(b);68     return 0;69 }

目录遍历 

1.递归遍历

  1 #include "head.h"                                                                                2 //递归遍历:3 int ListDir(const char*pdirname)4 {5     DIR *dp =NULL;6     struct dirent *pp =NULL;7     char c[4096]={0};8     dp = opendir(pdirname);9     if(NULL==dp)10     {11         perror("fail to open");12         return -1;13     }14     while(1)15     {16         pp=readdir(dp);17         if(NULL==pp)18         {19             break;20         }21         if('.'==pp->d_name[0]) //隐藏文件 以点开头的文件叫做隐藏文件22         {23             continue;   //跳过循环24         }25         sprintf(c,"%s/%s",pdirname,pp->d_name);  //拼接 26         printf("%s\n",c);27         if(pp->d_type == DT_DIR)28         {29             ListDir(c);30         }31     }32     closedir(dp);33     return 0;34 }35 int main(int argc,const char *argv[])36 {37     if(argc!=2)38     {39         fprintf(stderr,"Usage:./a.out dirname\n");40         return -1;41     }42     ListDir(argv[1]);43     return 0;44 }             

2.单层目录遍历

  1 #include "head.h"2 3 int main(void)4 {5     DIR *dp = NULL;6     struct dirent *pp = NULL;7 8     dp = opendir("dir1");                                                                        9     if (NULL == dp)10     {11         perror("fail to opendir");12         return -1;13     }14 15     while (1)16     {17         pp = readdir(dp);18         if (NULL == pp)19         {20             break;21         }22 23         if ('.' == *pp->d_name)24         {25             continue;26         }27 28         printf("%s/%s\n", "dir", pp->d_name);29     }30 31     closedir(dp);32 33     return 0;34 }35 

    主函数 传参
    文件IO:
    1. lseek
       off_t lseek(int fd, off_t offset, int whence);
       功能:
            重新设定文件描述符的偏移量
       参数:
            fd:文件描述符
            offset:偏移量
            whence:
                SEEK_SET    文件开头
                SEEK_CUR    文件当前位置
                SEEK_END    文件末尾
       返回值:
            成功返回当前偏移量
            失败返回-1 

目录IO:
    1.mkdir 
      int mkdir(const char *pathname, mode_t mode);
      功能:
        创建目录文件
      参数:
        pathname:文件路径
        mode:文件的权限
      返回值:
        成功返回0 
        失败返回-1 

        rwx rwx rwx
        111 111 111
        0777

        r: 目录中是否能够查看文件
        w: 目录中是否能够新建文件
        x: 目录是否能够进入
    
    2.rmdir
      int rmdir(const char *pathname);
      功能:
        删除空目录文件
      返回值:
        成功返回0 
        失败返回-1 

    3.opendir
      DIR *opendir(const char *name);
      功能:
        打开目录获得目录流指针
      参数:
        name:目录文件路径
      返回值:
        成功返回目录流指针
        失败返回NULL
      
    4.closedir
      int closedir(DIR *dirp);
      功能:
        关闭目录流指针

    5.readdir
      struct dirent *readdir(DIR *dirp);
      功能:
        从目录流中读取下一个目录项的结构体信息
      参数:
        dirp:目录流指针
      返回值:
        成功返回包含目录项信息的空间首地址
        失败返回NULL
        读到文件末尾返回NULL

        struct dirent {
            ino_t          d_ino;       /* Inode number */
            off_t          d_off;       /* Not an offset; see below */
            unsigned short d_reclen;    /* Length of this record */
            unsigned char  d_type;      /* Type of file; not supported
                                            by all filesystem types */
            char           d_name[256]; /* Null-terminated filename */
        };

    6.chdir 
      int chdir(const char *path);
      功能:
        切换当前代码的工作路径

    7.getcwd
      char *getcwd(char *buf, size_t size);
      功能:
        获得当前目录的绝对路径
        8.access 
      int access(const char *pathname, int mode);
      功能:
        检测调用函数的程序对文件是否拥有指定权限
      参数:
        pathname:文件路径
        mode:
            R_OK    检测是否拥有读权限
            W_OK    检测是否拥有写权限
            X_OK    检测是否拥有执行权限
            F_OK    检测文件是否存在
      返回值:
        有该权限返回0
        出错返回-1 
        
    sprintf 
    功能:把格式化的数据写入某个字符串  
    
    int sprintf( char *buffer, const char *format, [ argument] … );

    
    buffer:char型指针,指向欲写入的字符串地址。
  format:char型指针,指向的内存里面存放了格式字符串。
  [argument]…:可选参数,可以是任何类型的数据。
  返回值:字符串长度(strlen)
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode1049:最后一块石头的重量二

解题思路&#xff1a; 把石头堆分割成差不多的两堆&#xff0c;使得两堆差值最小 dp数组的含义&#xff1a; dp[j]:背包容量为j的背包最大重量(价值)为dp[j] dp[j] max(dp[j],dp[j-stones[i]] stones[i]) 初始化&#xff1a;&#xff08;dp数组的大小根据题目进行定义&a…

vue2中vuex的各项的各种调用方式,部分对比vue3的pinia

首先vuex的实例化比较特别&#xff0c;通过 导入Vue和Vuex&#xff0c;先Vue.use(Vuex)再 new Vuex.store()的方式来实例化仓库&#xff0c; 模块则是通过创建modules文件夹&#xff0c;在新建的文件中export符合规范的对象&#xff0c;这样约定俗成的方式来创建&#xff0c…

网络安全--网鼎杯2018漏洞复现(二次注入)

一、环境&#xff1a;在线测试平台 BUUCTF在线评测 (buuoj.cn) 二、进入界面先尝试万能账号 1or11# 换格式 hais1bux1 11or11# 三、万能的不行那我们就得想注册了&#xff0c;去register.php去看看 注册个账号 发现用户名回显&#xff0c;猜测考点为用户名处二次注入&…

Java 那些诗一般的 数据类型 (1)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

【JavaScript 语法】

JavaScript 语法 ■ JavaScript 是什么■ JavaScript 语法■ JS 注释■ JS 结束符■ JS 输入输出语句■ JS 代码块■ JS 关键词■ JS 值■ JS 字面量 &#xff08;混合值&#xff09;■ JS 变量&#xff08;变量值&#xff09;■ JS 文本值 (字符串)■ JS 字符串可以是对象 ■ …

JS文本加密方法探究

在前端开发中&#xff0c;有时候我们需要对敏感文本进行简单的加密&#xff0c;以提高安全性。本文将介绍一种基于 JavaScript 实现的文本加密方法&#xff0c;使用了 Base64、Unicode 和 ROT13 编码。 示例代码 function encodeText(text) {// Base64编码var base64Encoded …

MongoDB 权限管理

文章目录 前言1. 权限控制1.1 MongoDB 默认角色1.1.1 读写角色1.1.2 管理角色1.1.3 其他角色1.1.4 超级用户角色 1.2 用户管理1.2.1 查看用户1.2.2 创建新用户1.2.3 调整角色1.2.4 删除用户1.2.4 修改密码 前言 上一篇 《MongoDB 单机安装部署》 文章中&#xff0c;为 MongoDB…

STL常用之vector,list,stack,queue,deque总结与对比

一&#xff0c;vector 1&#xff09;底层 vector的底层是开辟出来的一块连续空间&#xff0c;类似于数组&#xff0c;每次空间满了之后会根据不同的编译器有不同的扩容倍数。 2&#xff09;优劣 优点&#xff1a;随机访问效率高&#xff0c;因为地址是连续的&#xff0c;底层…

native smart contracts, a easy forgotten thing.

"内置的智能合约"是指在区块链网络中预先存在的智能合约。这些合约通常由区块链的开发者编写&#xff0c;并在区块链网络创建时就已经部署。这些合约的功能通常包括处理基本的交易和账户管理等核心功能。 以太坊网络就有一种内置的智能合约&#xff0c;叫做 ERC-20 …

Linux 驱动开发基础知识——APP 怎么读取按键值(十二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

道可云元宇宙每日资讯|上海开放大学发布“智慧学习中心元宇宙”

道可云元宇宙每日简报&#xff08;2024年2月19日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 上海开放大学发布“智慧学习中心元宇宙” 上海开放大学首次发布了“智慧学习中心元宇宙”&#xff0c;初步构筑了上海开放大学5g元宇宙孪生学习环境&#xff0c;13所…

前端简单知识复习

1.symbol类型 Symbol 是 ECMAScript 6 中引入的一种新的基本数据类型&#xff0c;它表示独一无二的值。Symbol 值是通过 Symbol() 函数创建的。 Symbol 值具有以下特点&#xff1a; 独一无二性&#xff08;唯一性&#xff09;&#xff1a;每个通过 Symbol() 函数创建的 Symb…

Java面试题之Spring相关问题(持续更新)

1.spring是如何简化开发的&#xff1f; 基于POJO的轻量级和最小侵入编程&#xff1b;通过依赖注入和面向接口实现松耦合&#xff1b;基于切面&#xff08;AOP&#xff09;和惯例进行声明式编程&#xff1b;通过切面和模板减少样式代码&#xff0c;RedisTemplate&#xff0c;xx…

Python初学者必知的50个基础问题与解答

以下是一些常见的Python基础学习问题及其答案,希望对大家有所帮助&#xff1a; Python是什么类型的编程语言&#xff1f; Python是一种通用、高级、解释型的编程语言. Python中如何注释代码&#xff1f; 使用#符号添加单行注释,或使用三引号(""")添加多行注释.…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

Error creating bean with name ‘formContentFilter‘ defined in class path

问题描述 运行之前能正常的项目出现以上报错&#xff0c;提示创建“formContentFilter”时错误&#xff1b;org.springframework.boot版本2.4.8 org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name formContentFilter define…

202428读书笔记|《风吹哪页读哪页》——答案在路上,自由在风里,身处井隅,心向璀璨

202428读书笔记|《风吹哪页读哪页》——答案在路上&#xff0c;自由在风里&#xff0c;身处井隅&#xff0c;心向璀璨 文前篇章一 三餐四季篇章二 山水一程篇章三 心之安处篇章四 通关时刻篇章五 瞬间长大 《风吹哪页读哪页》飞扬文室编著&#xff0c;有很多非常经典又惊艳的句…

[hgame 2024 week1] crypto/pwn/reverse

第1周是入门题,作了3项的454道 Crypto 奇怪的图片 好像是个misc走错门了,给了一个程序和一堆图片,程序很长,但是看起来并不复杂 先用随机数生成一个图,和一个key(两个图),然后依次给这个图画上flag前i个字符,比如第1张是h,第2张是hg,依次类推.并且生成的图片名字是随机的,时…

4款AI写作软件推荐,让文章撰写更加轻松! #学习方法#知识分享

国外ChatGPT爆火&#xff0c;AI写作在国内也引起不小的瞩目&#xff0c;目前国内的AI写作工具少说也有几十上百个&#xff0c;要在这么多AI写作中找出适合自己的工具&#xff0c;一个一个尝试是不太现实的&#xff0c;所以今天就给大家推荐一些款AI写作工具。帮助你少走弯路&am…

【洛谷题解】P1051 [NOIP2005 提高组] 谁拿了最多奖学金

题目链接&#xff1a;[NOIP2005 提高组] 谁拿了最多奖学金 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;判断条件&#xff0c;累加 题意&#xff1a; 分析&#xff1a;直接统计&#xff0c;判断条件&#xff0c;输出即可&#xff08;水&#xff09; AC代码&am…