- (꒪ꇴ꒪ ),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
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔
~ - 🎉感谢关注🎉