文件IO及目录IO——day05

news2024/11/26 12:36:34

文件IO还剩下一个知识点,今天主要内容是目录IO

文件IO

lseek

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

eg:

#include"head.h"

int main(void)
{
	int fd = 0;
	char ch = 0;
	off_t len = 0;

	fd = open("a.txt",O_WRONLY | O_CREAT | O_TRUNC,0664);

	if(-1 == fd)
	{
		perror("fail to open");
		return -1;
	}

	len = lseek(fd,10,SEEK_SET);
	printf("len = %ld\n",len);
	ch = 'a';
	write(fd,&ch,1);

	len = lseek(fd,-5,SEEK_CUR);
	printf("len = %ld\n",len);
	ch = 'b';
	write(fd,&ch,1);

	len = lseek(fd,0,SEEK_SET);
	printf("len = %ld\n",len);
	ch = 'c';
	write(fd,&ch,1);

	close(fd);

	return 0;
}

结果:
在这里插入图片描述

目录IO

mkdir

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

 	 rwx rwx rwx
 	 111 111 111
 	 0777

  	r: 目录中是否能够查看文件
 	 w: 目录中是否能够新建文件
	  x: 目录是否能够进入  

rmdir

int rmdir(const char *pathname);
功能:
  	删除空目录文件
返回值:
 	 成功返回0 
 	 失败返回-1

opendir

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

closedir

closedir
   	int closedir(DIR *dirp);
功能:
  	关闭目录流指针

readdir

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 */
 };

eg:

#include"head.h"

int main(void)
{
	DIR *dp = NULL;
	struct dirent *pp = NULL;

	dp = opendir("dir");
	if(NULL == dp)
	{
		perror("fail to opendir");
		return -1;
	}

	while(1)
	{
		pp = readdir(dp);
		if(NULL == pp)
		{
			break;
		}

		if('.' == *pp->d_name)
		{
			continue;
		}

		printf("%s\n",pp->d_name);
	}

	closedir(dp);

	return 1;
}

结果:
在这里插入图片描述
输出该目录下的文件

chdir

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

getcwd

getcwd
   	char *getcwd(char *buf, size_t size);
功能:
 	获得当前目录的绝对路径

eg:

#include "head.h"

int main(void)
{
	char tmpbuff[4096] = {0};

	getcwd(tmpbuff,sizeof(tmpbuff));
	printf("tmpbuff = %s\n",tmpbuff);

	chdir("..");
	getcwd(tmpbuff,sizeof(tmpbuff));
	printf("tmpbuff = %s\n",tmpbuff);

	chdir("..");
	getcwd(tmpbuff,sizeof(tmpbuff));
	printf("tmpbuff = %s\n",tmpbuff);
	
	chdir(".");
	getcwd(tmpbuff,sizeof(tmpbuff));
	printf("tmpbuff = %s\n",tmpbuff);

	return 0;
}

结果:
在这里插入图片描述

access

access 
    int access(const char *pathname, int mode);
功能:
 	检测调用函数的程序对文件是否拥有指定权限
参数:
 	pathname:文件路径
 	mode:
     	R_OK    检测是否拥有读权限
     	W_OK    检测是否拥有写权限
     	X_OK    检测是否拥有执行权限
     	F_OK    检测文件是否存在
返回值:
 	有该权限返回0
 	出错返回-1 

以上就是今天的内容!

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

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

相关文章

【PyQt6] 框选截图功能

1 简介 书接上回, 全屏截图实现起来很简单, 来点稍微复杂点的, 框选截图 原理很简单, 弄个控件实现全屏半透视, 在全屏控件上画一个选框或者再弄一个几乎全透的子控件,实现鼠标拖动,缩放,移动, 键盘wasd 微调 用一个控件实现起来会很完美, 但是逻辑全部堆砌在一起,看代码会很…

PWM功能介绍 和配置

泰山派默认提供了3组PWM的GPIO , 为了检测PWM的输出,我们可以配合逻辑分析仪来查看效果,或者搭配STC8的LED灯 PWM 测试 列举所有的PWM设备: # 查找所有有pwm名称的文件 find / -name "pwm" # pwm4: pwmfe6e0000 edp屏幕…

VPX信号处理卡设计原理图:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 信号处理 无线电通信

一、概述 本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V690T-2FFG1761I作为主处理器,Xilinx 的Aritex XC7A200T作为辅助处理器。XC7A2…

OpenAI视频生成模型Sora的全面解析:从ViViT、扩散Transformer到NaViT、VideoPoet

前言 真没想到,距离视频生成上一轮的集中爆发(详见《视频生成发展史:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0、W.A.L.T》)才过去三个月,没想OpenAI一出手,该领域又直接变天了 自打2.16日OpenAI发布sora以来(其开发团队包…

30分钟快速上手LaTex

文章目录 30 分钟快速上手 LATEX1.什么是LATEX?2.为什么学习LATEX?3.编写第一个LATEX程序4.LATEX文档的序言5.LATEX文档的标题、作者和日期信息6.LATEX文档的注释7.LATEX文档的粗体、斜体和下划线8.LATEX文档中添加图片9.LATEX中对图像进行标注、标签化和引用10.在LATEX中创建…

105.网游逆向分析与插件开发-网络通信封包解析-分析接收到的对话数据包

内容参考于:易道云信息技术研究院VIP课 上一个内容:接收数据的初步逆向分析 通过上一个内容,找到了数据包出现的一个很重要的位置,只要hook之后就能很好的得到这个数据了 然后来到明文数据的位置,把数据包复制出来&…

跨境电商独立站是什么?为什么要做独立站?

独立站在近两年被推上风口,很多人跟风涌入赛道,但并不知道做独立网站的根本原因是什么?为什么跨境电商要做独立站? 今天分享这篇文章,希望能帮助正在建站或想要建站的朋友们建立起对独立站的优劣势、未来发展空间的一…

《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4

《剑指Offer》笔记&题解&思路&技巧&优化_Part_4 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列2. LCR 14…

Linux:grep进阶(11)

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》_shell grep 全角字符串-CSDN博客https://blog.csdn.net/w14768855/article/details/132338954?ops_request_misc%257B%2522request%255Fid%2522%253A%252217083360171680022…

状压dp,HDU1074.Doing Homework

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher giv…

【JavaEE】_HTTP响应

目录 1. 首行 2. 报头header 3.空行 4. 正文body 1. 首行 响应首行:版本号状态码状态码描述; HTTP状态码描述了这次响应的结果(比如成功、失败,以及失败原因等); 1. HTTP状态码有: &#…

【EI会议征稿通知】第三届先进制造技术与制造系统国际学术会议(ICAMTMS 2024)

第三届先进制造技术与制造系统国际学术会议(ICAMTMS 2024) 2024 3rd International Conference on Advanced Manufacturing Technology and Manufacturing System 随着工业技术的发展,先进制造技术日益成为未来制造业发展的重大趋势和核心内…

Maven属性scope

参考: maven 中 scope标签的作用(runtime、provided、test、compile 的作用) 【Maven】属性scope依赖作用范围详解 scope为provided

VNCTF2024misc方向部分wp

文章目录 sqlsharkLearnOpenGLez_msbOnlyLocalSql sqlshark tshark -r sqlshark.pcap -Y "http" -T fields -e frame.len -e http.file_data > data.txt不太像常规的盲注,一次性发送两条很类似的payload,比常规的多了一个least在判断passw…

不懂咱就学,记不住多看几遍(二)

一、Redis分布式锁中加锁与解锁、过期如何续命 实现要点: 互斥性,同一时刻,只能有一个客户端持有锁。防止死锁发生,如果持有锁的客户端因崩溃而没有主动释放锁,也要保证锁可以释放并且其他客户端可以正常加锁。加锁和…

TypeScript(二):TypeScript的细节

TypeScript语法细节 联合类型(满足其中一个即可) 可以使用多种运算符,从现有的类型中构建新类型 const number|string 123 可以是这些类型中的任何值但是使用的时候需要小心 let virable: number | string 123function getData(id: numb…

金山WPS下的word,如何删除表格下面的大段空白

在csdn,你甚至可以学习到wps小技巧。 如题,这种大段空白怎么设置文本格式,表格格式都没用。正常的backspace删除也没用。 解决方式如下: 长按鼠标左键拖拽选中空白区域(可能没有选中成功的特效没关系)&am…

Golang - 使用CentOS 7 安装Golang环境

文章目录 操作步骤 操作步骤 为在CentOS 7上安装Go语言环境,可以按照以下步骤进行操作: 下载Go语言包: 从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。 解压缩Go语言包: 使用以下命令解压缩下载的Go语言包 […

洛谷 P6546 [COCI2010-2011#2] PUŽ

讲解&#xff1a; 首先还是正常输入&#xff1a; int a,b,v; cin>>a>>b>>v; 然后经入一个函数num&#xff1a; cout<<num(1.0*(v-a),(a-b))1<<endl; 之所以要乘以1.0是因为要向上取整&#xff01;而这个num函数的两个参数则是“蜗牛白天爬了多…

Asymmetric Temperature Scaling(NeurIPS 2022)论文速读

paper&#xff1a;Asymmetric Temperature Scaling Makes Larger Networks Teach Well Again official implementation&#xff1a;https://gitee.com/mindspore/models/tree/master/research/cv/ats 本文的创新点 在知识蒸馏中&#xff0c;一个奇怪的现象是大的教师模型未必…