目录操作在C语言中:一个全面的指南

news2024/11/28 10:32:36
  • (꒪ꇴ꒪ ),hello我是祐言
  • 博客主页:C语言基础,Linux基础,软件配置领域博主🌍
  • 快上🚘,一起学习!
  • 送给读者的一句鸡汤🤔:
  • 集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏

一、目录操作函数

        在C语言编程中,目录操作是一个重要的部分,它使我们可以在程序中对文件系统进行读写操作。在这篇文章中,我们将详细介绍一些基础的目录操作函数,包括其功能、头文件、原型、参数以及示例。

        1. opendir

opendir函数用于打开指定的目录,并返回一个目录指针。

#include <sys/types.h>
#include <dirent.h>

DIR *opendir(const char *name);

name参数是你想要打开的目录的名称。

        2. readdir

readdir函数用于读取目录项,它返回一个指向struct dirent的指针,该指针指向的结构体包含了目录项的信息。

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

dirp参数是由opendir函数返回的目录指针。

        3. mkdir

mkdir函数用于创建一个新的空目录。

#include <sys/stat.h>
#include <sys/types.h>

int mkdir(const char *pathname, mode_t mode);

pathname参数是你想要创建的新目录的名称,mode参数则用于设置新目录的权限。

        4. chdir

chdir函数用于更改进程的当前工作目录。

#include <unistd.h>

int chdir(const char *path);

path参数是你想要切换到的新工作目录的路径。

        5. getcwd

getcwd函数用于获取进程的当前工作目录。

#include <unistd.h>

char *getcwd(char *buf, size_t size);

buf参数是一个字符数组的指针,用于存储返回的目录路径。size参数buf数组的大小。

        6. closedir

closedir函数用于关闭一个打开的目录。

#include <dirent.h>

int closedir(DIR *dirp);

dirp参数是由opendir函数返回的目录指针。

        7. get_current_dir_name

get_current_dir_name函数用于获取进程的当前工作目录。这个函数是GNU扩展的一部分,不是POSIX标准的一部分,因此可能在一些非GNU系统上不可用。

#include <unistd.h>

char *get_current_dir_name(void);

        这个函数没有参数,返回的是一个指向表示当前工作目录的字符串的指针。

二、目录项结构体

        目录项是由readdir函数返回的,它的结构体定义如下:

struct dirent {
    ino_t d_ino;             /* inode 编号 */
    off_t d_off;             /* 到下一个目录项的偏移量 */
    unsigned short d_reclen; /* 目录项记录的长度 */
    unsigned char d_type;    /* 文件类型;并非所有文件系统类型都支持该字段 */
    char d_name[256];        /* 文件名 */
};

        在这个结构体中,d_ino是文件的inode号,d_off是到下一个目录项的偏移,d_reclen是这个记录的长度,d_type是文件的类型,而d_name则是文件的名称。

三、示例例程

        现在我们来看一个简单的示例,这个示例程序将列出指定目录下的所有文件和目录。

#include <stdio.h>
#include <dirent.h>

int main() {
    // 打开当前目录
    DIR *dir = opendir("./");
    if (dir == NULL) {
        perror("opendir fail");
        return 1;
    }

    // 读取目录项并打印出文件名
    struct dirent *dp;
    while ((dp = readdir(dir)) != NULL) {
        printf("File Name: %s\n", dp->d_name);
    }

    // 关闭目录
    closedir(dir);

    return 0;
}


        在这个示例中,我们首先使用opendir函数打开当前目录,然后使用readdir函数读取每一个目录项,并打印出它的名字,最后使用closedir函数关闭目录。

        通过这篇文章,你应该已经对C语言中的目录操作有了一定的理解。这些函数提供了对文件系统进行读写的基础工具,我们可以通过组合使用这些函数来实现各种复杂的文件和目录操作。当然,这些只是C语言中关于目录操作的一部分,还有许多其他函数和技术等待你去探索和学习。希望这篇文章对你的学习有所帮助,如果你有任何问题或者建议,欢迎在评论中留言。

        更多C语言Linux系统相关文章,关注专栏:

   手撕C语言

            玩转linux

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉感谢关注🎉

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

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

相关文章

7.26 Qt

用QT制作一个登陆界面 运行代码 login.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //信息调试类&#xff0c;用于输出 #include <QIcon> //图标类头文件 #include <QPushButton&…

更新合集 | 七月功能上新记

点击链接了解详情 七月来临&#xff0c;正式开启 2023 下半年的新征途&#xff01;这个盛夏&#xff0c;腾讯云 CODING 上线了微信扫码注册、微信通知、Go 制品管理等重点能力&#xff0c;为企业及团队研发管理带来更多便利&#xff01;以下是 CODING 新功能速递&#xff0c;快…

一文搞定IP地址

IP编址系列文章&#xff08;上&#xff09; 目录 一&#xff0c;什么是IP地址&#xff1f; 二&#xff0c;IP地址的表示方式 问题&#xff1a;计算机能识别二进制&#xff1f;十进制&#xff1f;十六进制&#xff1f; 三&#xff0c;二进制如何转换为十进制呢&#xff1f; …

如何准备远程开发环境

准备一台有root权限的服务器 创建用于开发的子用户 使用adduser命令创建新用户: sudo adduser newuser为新用户添加sudo权限,编辑sudoers文件: sudo visudo在文件中添加: newuser ALL(ALL:ALL) ALL将新用户添加到docker用户组: sudo usermod -aG docker newuser改权限 ch…

Java 聊天程序案例

单线程版本&#xff1a; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;//服务端 public class Server {public static void main(String…

HikariCP连接池

HikariCP连接池 HikariCP连接池是高性能的JDBC连接池&#xff0c;官网标注的三大特点&#xff1a;快速、简单、可靠&#xff0c;性能优于其他连接池。 官网详细地说明了HikariCP所做的一些优化&#xff0c;总结如下&#xff1a; 字节码精简&#xff1a;优化代码&#xff0c;直…

领跑人机协同时代!实在智能与EFCIO携手举办AI沙龙,推动企业数字化转型

GPT翻开了AGI&#xff08;通用人工智能&#xff09;领域的新篇章&#xff0c;也开启了各行各业的新时代。毫不夸张地说&#xff0c;进入大模型时代&#xff0c;所有的应用都值得被重写一遍。同时&#xff0c;企业也需要积极采纳新技术和创新模式&#xff0c;以应对竞争压力和不…

MURF2080CT/MURF2080CTR-ASEMI快恢复对管

编辑&#xff1a;ll MURF2080CT/MURF2080CTR-ASEMI快恢复对管 型号&#xff1a;MURF2080CT/MURF2080CTR 品牌&#xff1a;ASEMI 芯片个数&#xff1a;2 芯片尺寸&#xff1a;102MIL*2 封装&#xff1a;TO-220F 恢复时间&#xff1a;50ns 工作温度&#xff1a;-50C~150C…

代码随想录day28

46. 全排列 思路&#xff1a;这道题首先是一个排列问题&#xff0c;排列问题是讲究顺序的&#xff0c;例如[1,2]和[2,1]是两个不一样的排列&#xff0c;这里的1我们会有重复使用到&#xff0c;但是&#xff0c;在每一个排列中&#xff0c;每一个元素只能使用一次。所以需要一个…

外贸行业企业邮箱选择:安全好用的邮箱服务

随着全球化的发展&#xff0c;外贸行业在全球经济中越来越重要。作为一家从事对外贸易的企业&#xff0c;可靠、安全、易用的邮箱系统对于成功的国际交易至关重要。为您的企业选择正确的邮箱解决方案可能是一个挑战。为了使选择过程更加简化&#xff0c;我们在这里提供了一些提…

C++模板的简单练习

运行代码&#xff1a; #include"std_lib_facilities.h"template <class T>struct S { private:T val; public:S<T>() :val(T()) {}S<T>(T tt) : val(tt) {};T& get();void set(T tt) { val tt; }ostream& operator << (ostream&a…

为什么 Splashtop 是更好用的 iOS 远程桌面应用

全球远程桌面软件市场最近达到19.2亿美元&#xff0c;表明使用任意设备实现随处远程控制越来越受欢迎。 近年来&#xff0c;企业的运营方式发生了重大改变&#xff0c;远程桌面软件已成为广泛使用的解决方案。Splashtop 是目前最好用的远程桌面工具之一&#xff0c;安全可靠且…

Android安卓实战项目(2)---健身UI APP(源码在文末)

Android安卓实战项目&#xff08;2&#xff09;—健身UI APP&#xff08;源码在文末&#xff09; 一.项目运行介绍 1.大致浏览 2.功能介绍 &#xff08;1&#xff09;功能一 第一个界面点击后可以弹出图像&#xff0c;如图&#xff1a; &#xff08;2&#xff09;功能二 界…

[Spring] 三级缓存解决循环依赖详解

什么是循环依赖 注册一个bean对象的过程&#xff1a; Spring扫描class得到BeanDefinition – 根据得到的BeanDefinition去生成bean – 现根据class推断构造方法 – 根据推断出来的构造方法&#xff0c;反射&#xff0c;得到一个对象 – 填充初始对象中的属性(依赖注入) – 如果…

window的anaconda下安装opencv

window安装opencv 阿巴阿巴&#xff0c;安装了多少遍的opencv今天居然搞了这么久。整理一下笔记把。 解决思路主要来源于&#xff1a;(37条消息) 导入import cv2时出现ImportError:DLL load fail:找不到指定模块的解决办法_import cv2 importerror: dll load failed: 找不到指定…

【C进阶】指针进阶(1)_二次复习版

目录 1. 字符指针 1.1常量字符串的修改 加上const解决问题 打印常量字符串 1.2数组存放的字符串 1.3例题:数组创建与常量池的区别 2. 指针数组 2.1字符指针数组 2.2整型指针数组 2.3使用3个一维数组,模拟实现一个二维数组 2.4例题: 3.数组指针 3.1 数组指针的定义…

快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧

目录 概念&#xff1a;1. webpack 打包简介1.0 多个 JS 文件打包&#xff1a;1.1 webpack 数组形式1.2 webpack 对象形式 总结 Webpack的打包过程可以总结为以下几个步骤&#xff1a; 1.入口点配置&#xff1a;在Webpack的配置文件中&#xff0c;我们需要指定一个或多个入口点…

Android Studio 代码模板插件实现

Android Studio 代码模板插件 背景 可以跳过背景和简述&#xff0c;从模板插件实现开始看. 开发新页面时&#xff0c;原先需要写一堆模板代码。比如用Databinding写列表结构的页面&#xff0c;需要手写以下文件&#xff1a; XxActivity.ktXxFragment.ktXxViewModel.ktXxListA…

从零开始学习CTF

前言 CTF简介 中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式&#xff1a; 在解题模式…

如何引导客户进行自助服务,提高员工工作效率?

搭建帮助中心是大多数企业都在尝试做的事情&#xff0c;它的重要性对于企业来说不言而喻。现在对于企业来说&#xff0c;搭建帮助中心或许不是什么难事&#xff0c;但是关于帮助中心&#xff0c;有几个问题需要思考清楚&#xff0c;才能让其发挥最大的价值。 一、如何让用户养成…