Tag: 目录

是否可以在C中重复使用opendir?

我正在尝试在C中进行调试,我很好奇,如果可以反复调用opendir()而不必先调用closedir(),因为我试图在调用while循环时运行循环来打开子目录readdir()遇到它们。 我假设关闭当前目录会导致我无法读取它。

如何从C代码调用powershell脚本

在我的情况下,我需要从ac或c ++代码源调用一个powershell脚本,发现一些非常笨拙且不适合c ++的链接,我只是想要一个路线图,如果它可能调用一个PowerShell脚本,它列出了代码中的目录内容用c或c ++编写的片段

Linux C读取目录

您好我想读取和写入目录,就像读取和写入文件一样。 我总是使用open , read , write和close函数,这意味着我使用了描述符。 但是在目录上执行此操作不起作用, open调用有效,但read返回-1而errno是EISDIR。 我被迫使用流来读取目录吗?

C操纵目录:如何通过在主参数中给出其名称来定位目录

我在C中操作目录时遇到了麻烦。 我想在main上给出2个目录的名称作为参数 检查第一个目录是否存在(在当前路径中) 打开目录 调用一个函数(我创建的)来创建文件并在目录中执行操作 关闭目录并进入第二个目录并执行相同操作。 我写了我的代码,但它仍然没有做我在main上的目录里面的东西,而是看起来我总是位于当前目录,所以打开目录的调用不好??? 这就是我所做的: int main(int argc, char *argv[]) { int i = 0; char cwd[1024]; if(argc < 3) { printf("Erreur dans les arguments\n"); } else { for(i = 1; i < argc; i++) { if (getcwd(cwd, sizeof(cwd)) == NULL) { printf("an error occured when getting current directory\n"); } // make […]

如何确定父/其他目录中的文件和目录

我发现这里的另一个问题的答案非常有用。 似乎有一个sys / stat.h库的限制,因为当我试图查看其他目录时,所有内容都被视为一个目录。 我想知道是否有人知道另一个系统function或为什么它将当前工作目录之外的任何内容视为仅一个目录。 我感谢任何人提供的任何帮助,因为这让我感到困惑,各种搜索都没有帮助。 我测试的代码是: #include #include #include int main(void) { int status; struct stat st_buf; struct dirent *dirInfo; DIR *selDir; selDir = opendir(“../”); // ^ or wherever you want to look while ((dirInfo = readdir(selDir))) { status = stat (dirInfo->d_name, &st_buf); if (S_ISREG (st_buf.st_mode)) { printf (“%s is a regular file.\n”, dirInfo->d_name); […]

如何递归浏览文件夹并计算总文件大小

我试图递归遍历我的目录并打印文件大小,然后在最后打印所有文件大小的总和。 我无法弄清楚以递归方式传递我的函数的内容,并且我的变量总数不会最终正确,任何帮助都非常感谢,非常感谢提前。 #include #include #include #include #include #include void do_ls(char[]); int total = 0; int main(int ac, char *av[]) { if (ac == 1) do_ls(“.”); else { while (–ac) { printf(“%s:\n”, *++av); do_ls(*av); } } } void do_ls(char dirname[]) { DIR *dir_ptr; struct dirent *direntp; struct stat info; if ((dir_ptr = opendir(dirname)) == NULL) fprintf(stderr, […]

如何在c中为以下要求创建递归目录?

我希望有超过一百万个具有唯一名称的文件。 有人告诉我,如果我将所有这些文件放在一个或两个目录中,这些文件的搜索速度将非常慢。 所以我想出了以下目录架构。 我希望目录结构分支出10个子目录,子目录的级别将是4.因为文件名保证是唯一的我想使用这些文件名来制作可用于放置文件的哈希值在一个目录中,以后也可以找到它。 随机散列值将使目录具有大约1,000个文件。 因此,如果F是根目录,则插入或搜索文件将必须执行以下步骤: 我想使用0-9之间的数字作为目录名称 h=hash(filename) sprintf(filepath,”f//%d//%d//%d//%d//.txt”,h%10,h%10,h%10,h%10); 我如何创建这些目录? 编辑: 所有文件都是文本文件。 该计划将分发给许多人,以收集研究信息。 因此,重要的是这些文件是这样创建的。 编辑: 我创建了以下代码来实现perreal的伪代码。 它编译成功但会给出最后给出的运行时错误。 sprintf()行发生错误。 #include #include #include void make_dir(int depth, char *dir) { if (depth < 4) { if (! CreateDirectoryA (dir,NULL)) for (int i = 0; i < 10; i++) { sprintf(dir,"\\%d",i); char *sdir=NULL ; strcpy(sdir,dir); CreateDirectoryA(sdir,NULL); make_dir(depth + 1, […]

使用mknod()创建目录

我需要使用mknod()创建一个目录mknod()在我的情况下不允许使用mkdir() ),我会从某个目录调用该程序,并引入在前一个目录中创建新目录的路径。 例如:如果我是/home/user/test/并且内部test有/level1/ ,我想在level1内创建目录level2 ,所以我会传递参数/level1/level2/ 我有以下代码,当我创建一个管道时,但当我将模式更改为S_IFDIR ,它没有做任何事情。 #include #include #include #include #include #include #include void main(int argc,char *argv[]){ int status; if ((status = mknod(argv[1], S_IFDIR,0)) == 1){ printf(“error\n” ); } exit(0); }

可执行启动目录的绝对路径

我试图弄清楚如何获取我的程序的开始目录。 我正在使用C并可以访问GLib。 在Linux方面,只要程序启动就很容易g_get_current_directory,并存储该值以供以后使用。 我尝试在Windows上使用相同的方法,但g_get_current_directory返回%APPDATA%解析的内容。 关于如何使用C获取起始目录的任何想法? 谢谢,

FAT32每个目录限制的文件数

我正在尝试在Xillinx Kintex 7卡上用C编码FAT系统。 它配备了MicroBlaze,我已经设法创建了大部分所需的function。 我面临的问题是关于文件夹的总容量,我在网上看到在FAT32中一个文件夹应该能够包含超过65000个文件但是我已经安装了系统我是每个文件夹限制为509个文件。 我认为这是因为我理解了FAT32的工作方式,但这是我迄今为止所做的: 我创建了一个格式化函数,它将正确的数据写入MBR(扇区0)和卷ID(我的磁盘上的扇区2048)。 我创建了一个函数来写入根目录的内容(第一个集群在扇区124 148上开始) 我创建了一个函数来编写一个包含大小为X的N个文件的新文件夹。文件夹的名称写在根目录(扇区124148)中,文件名写在下一个簇(扇区124212,因为我已经将簇大小设置为64个扇区)。 最后,文件的内容(一个简单的计数器)写在从扇区124276开始的下一个簇上。 这里的问题是文件夹的大小为1簇,这意味着它的容量为64扇区= 32KB,我只能在目录中创建512(减2)个文件! 然后,我的问题是:是否可以更改群集数量的文件夹大小? 目前我只使用1个集群,我不明白如何更改它。 它与驱动器的FAT有关吗? 在此先感谢您的帮助! 注意:当我将其插入时,Windows可以识别我的驱动器,我可以访问和读取每个文件(超出510限制的文件除外),我可以通过Windows资源管理器创建新文件。 它显然来自我理解文件创建和文件夹创建的方式!