首页 > 其他分享 >C语言目录操作(2024.8.12)

C语言目录操作(2024.8.12)

时间:2024-08-18 14:58:24浏览次数:8  
标签:12 2024.8 argv C语言 char pathname DT include dt

用递归删除目录(多个目录可以从参数传进来)

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>


/*
从目录中读到的所谓目录项,是一个这样的结构体:
struct dirent
{
	ino_t d_ino; // 文件索引号
	off_t d_off; //  目录项偏移量
	unsigned short d_reclen; // 该目录项大小
	unsigned char d_type; // 文件类型如下
	char d_name[256]; // 文件名
};*/
/*********************目录项中文件类型d_type的所有类型的宏定义***********************************************/
/*
		DT_BLK      This is a block device.

       DT_CHR      This is a character device.

       DT_DIR      This is a directory.

       DT_FIFO     This is a named pipe (FIFO).

       DT_LNK      This is a symbolic link.

       DT_REG      This is a regular file.

       DT_SOCK     This is a UNIX domain socket.

       DT_UNKNOWN  The file type is unknown.*/




void del_dir(char* argv)
{
	DIR* dp = opendir(argv);
	while(1)
	{
		struct dirent*dt = readdir(dp);
		if(NULL == dt)
		{
			break;
		}
		if(strcmp(dt->d_name,".") == 0 || strcmp(dt->d_name,"..") == 0)
		{
			continue;		
		}
		if(dt->d_type == DT_REG)
		{
			char* pathname = malloc(1024);
			
			snprintf(pathname,1024,"%s/%s",argv,dt->d_name);
			
			printf("%s\n",pathname);
			
			unlink(pathname);
			
		}
		if(dt->d_type == DT_DIR)
		{
			char* pathname = malloc(1024);
			
			snprintf(pathname,1024,"%s/%s",argv,dt->d_name);
			
			printf("%s\n",pathname);
			
			del_dir(pathname);
			
			rmdir(pathname);
			
		}
		rmdir(argv);
	}
	
	
}

int main(int argc,char** argv)
{
	int i=1;
	for(i;i<argc;i++)
	{
		del_dir(argv[i]);
	}
}

标签:12,2024.8,argv,C语言,char,pathname,DT,include,dt
From: https://blog.csdn.net/SICHUAN3U8633/article/details/141142291

相关文章

  • C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现
    文章目录strlen的使用和模拟实现函数的原型strlen模拟实现:方法1方法2方法3strcpy的使用和模拟实现函数的原型strcpy的模拟实现:strcat的使用和模拟实现函数的原型strcat的模拟实现:strcmp的使用和模拟实现函数的原型strcmp的模拟实现本章的内容主要讲解这4个与字符......
  • 【Android驱动12】Modem编译和sim卡配置检测过程
    一,Modem编译1.1查看ReleseNote发现需要查看"Build_Configure_Modem_MOLY"这张表,解压MT67xx_(xxx)_MOLY.LR9.W1444.MD.LWTG.MP.Vx.tar.gz到某文件,并在make目录下查看支持的配置信息1.2执行的命令,开始编译modem,则是./make.sh"SM67xx(Lxx_xxx).mak"new1.3执行perl......
  • C语言工程实践实现完整的五子棋项目一
    五子棋第一章玩家信息部分五子棋五子棋第一章前言一、所需技术二、玩家信息部分实现1.头文件部分2.菜单部分3.玩家信息部分总结每文推荐前言接下来的几篇文章我将带领大家实现一个工程实践的项目–五子棋。它是一个比较完整的项目,主要包括了三个部分:1.玩家信......
  • 【C语言篇】数组和函数的实践:扫雷游戏(附源码)
    文章目录前言扫雷游戏的分析和设计扫雷游戏的功能说明游戏的分析和设计文件结构设计扫雷游戏的代码实现初始化棋盘打印棋盘布置雷排查雷扫雷游戏的拓展前言源码在最后扫雷游戏的分析和设计经典扫雷游戏扫雷游戏的功能说明使⽤控制台实现经典的扫雷游戏游戏可......
  • 【C语言】内存函数
    memcpy使用和模拟实现void*memcpy(void*destination,constvoid*source,size_tnum);介绍:•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。•这个函数在遇到‘\0’的时候并不会停下来。•如果source和destinati......
  • 2024.8.11至2024.8.17周总结
    本周学习任务清单1.字符串:Hash、KMP、trie树、拓展KMP(Z函数)、AC自动机、Manacher、回文自动机、后缀数组、后缀自动机、广义后缀自动机2.数论:欧拉函数、莫比乌斯函数、欧拉反演、莫比乌斯反演、筛法、杜教筛、min25筛3.博弈论:公平组合游戏、反常游戏、SG函数总结本周学习的......
  • C语言学习————常量和宏、初识指针
    #define定义常量和宏define是一个预处理指令用途:1.define定义符号#defineMAX1000intmain(){ printf("%d\n",MAX); return0;}2.define定义宏#defineADD(X,Y)((X)+(Y))intmain(){ printf("%d\n",ADD(2,3)); return0;}指针内存内存是计算机上特......
  • C语言 错误 C4716 “printstar”: 必须返回一个值
    错误:解决办法: 此类代码显然不需要返回值1.点击“项目”——“属性”2.点击“C/C++”中的“高级”——“禁用特定警告”中输入“4716”——点击“确定” 3.重新运行即可成功 ......
  • c语言(8.18)
    补一下前几天练习的代码#include<stdio.h>intmain(){ intn=0; //scanf("%d",&n); intsum=0; for(intj=1;j<=10;j++) { intmul=1;//mul应该放在里面才行,每一次新的阶乘mul都是1 for(inti=1;i<=j;i++) { mul=mul*i; }......
  • 【时时三省】(C语言基础)调试技巧2
    山不在高,有仙则名。水不在深,有龙则灵。             ----CSDN时时三省多多动手,尝试调试,才能有进步。•一定要熟练掌握调试技巧。•初学者可能80%的时间在写代码,20%的时间在调试。但是一个程序员可能20%的时间在写程序,但是80%的时间在调试。•我......