在C语言中,可以使用系统调用函数opendir、readdir、closedir来实现类似于Matlab中dir函数的功能,具体实现如下:
#include <stdio.h>
#include <dirent.h>
void dir(const char* path) {
DIR *dir;
struct dirent *entry;
dir = opendir(path);
if (dir == NULL) {
printf("Cannot open directory: %s\n", path);
return;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
}
其中,path参数为需要遍历的目录路径。该函数首先使用opendir打开目录,然后使用readdir函数逐个读取目录下的文件或子目录,并打印它们的名字,最后使用closedir函数关闭目录。
需要注意的是,该函数并没有实现Matlab中dir函数的所有功能,如文件的大小、日期等信息没有打印出来。如果需要打印更多信息,可以通过struct stat结构体中的成员变量获取,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <time.h>
void dir(const char* path) {
DIR *dir;
struct dirent *entry;
struct stat file_stat;
char file_path[256];
dir = opendir(path);
if (dir == NULL) {
printf("Cannot open directory: %s\n", path);
return;
}
printf("%-40s%-20s%-20s\n", "Name", "Size", "Date");
while ((entry = readdir(dir)) != NULL) {
sprintf(file_path, "%s/%s", path, entry->d_name);
if (stat(file_path, &file_stat) == -1) {
printf("Cannot get file info: %s\n", entry->d_name);
continue;
}
printf("%-40s%-20ld%-20s", entry->d_name, file_stat.st_size, ctime(&file_stat.st_mtime));
}
closedir(dir);
}
其中,path参数为需要遍历的目录路径。该函数首先使用opendir打开目录,然后使用readdir函数逐个读取目录下的文件或子目录,并打印它们的名字、大小、日期等信息。在打印日期时,可以使用ctime函数将st_mtime成员变量转换为字符串格式。在获取文件信息时,使用stat函数读取文件的状态信息,包括文件的大小、日期等信息。