当前位置:首页 » 编程语言 » c语言代码目录结构
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言代码目录结构

发布时间: 2023-07-21 14:52:35

1. 如何用c语言列出目录树

给你一个参考:

相关函数:opendir
表头文件:#include <ftw.h>
定义函数:int ftw(const char *dir, int (*fn) (const *file, const struct stat *sb, int flag), int depth)
函数说明:ftw() 会从参数dir指定的目录开始,往下一层层地递归式遍历子目录。ftw()会传三个参数给fn(), 第一个参数*file指向当时所在的目录路径,第二个参数是*sb, 为stat结构指针,第三个参数为旗标,有下面几种可能值
FTW_F 一般文件
FTW_D 目录
FTW_DNR 不可读取的目录,此目录以下将不被遍历
FTW_SL 符号连接
FTW_NS 无法取得stat结构数据,有可能是权限问题

最后一个参数depth代表ftw()在进行遍历目录时同时打开的文件数。ftw()在遍历时每一层目录至少需要一个文件描述词,如果遍历时用完了depth所给予的限制数目,整个遍历将因不断地关文件和开文件操作而显得缓慢
如果要结束ftw()的遍历,fn()只需返回一非零值即可,此值同时也会是ftw()的返回值。否则ftw()会试着走完所有的目录,然后返回0

返 回 值:遍历中断则返回fn()函数的返回值,全部遍历则返回0,若有错误发生则返回-1
附加说明:由于ftw()会动态配置内存使用,请使用正常方式(fn函数返回非零值)来中断遍历,不要在fn函数中使用longjmp()

示例:
/*列出/etc/X11目录下的子目录*/

#include <sys/stat.h>
#include <unistd.h>
#include <ftw.h>

int fn(const char *file, const struct stat *sb, int flag)
{
if(flag == FTW_D)
printf("%s --- directory\n", file);
else
printf("%s \n",file);
return 0;
}

int main()
{
ftw("/etc/X11",fn,500);
}

2. 在windows操作系统中,文件的目录结构什么型的啊

树形结构。

windows目录的文件结构,采用的是一种树形结构。树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要的非线性数据结构。

在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。另外,数学统计中的树形结构可表示层次关系。树形结构在其他许多方面也有应用。可表示从属关系、并列关系。

windows操作系统是最常见的计算机操作系统,是微软公司开发的操作软件。该软件经历了多年的发展历程,目前推出的win10系统相当成熟。Windows操作系统具有人机操作互动性好,支持应用软件多,硬件适配性强等特点,未来该系统将更加安全、智能、易用。

操作系统是将人类利用计算机硬件发挥作用的平台,是计算机软件运行工作的环境,是计算机硬件的翻译。从计算机诞生发展到今天,出现了相当多种类的操作系统。Windows操作系统是其中的佼佼者。Windows操作系统是美国微软公司推出的一款操作系统。该系统从1985年诞生到现在,经过多年的发展完善,相对比较成熟稳定,是当前个人计算机的主流操作系统。

3. 数据结构(C语言版)的目录

第1章 绪论
1.1 什么是数据结构
1.2 基本概念和术语
1.3 抽象数据类型的表现与实现
1.4 算法和算法分析
第2章 线性表
2.1 线性表的类型定义
2.2 线性表的顺序表示和实现
2.3 线性表的链式表示和实现
2.4 一元多项式的表示及相加
第3章 栈和队列
3.1 栈
3.2 栈的应有和举例
3.3 栈与递归的实现
3.4 队列
3.5 离散事件模拟
第4章 串
4.1 串类型的定义
4.2 串的表示和实现
4.3 串的模式匹配算法
4.4 串操作应用举例
第5章 数组和广义表
5.1 数组的定义
5.2 数组的顺序表现和实现
5.3 矩阵的压缩存储
5.4 广义表的定义
5.5 广义表的储存结构
5.6 m元多项式的表示
5.7 广义表的递归算法第6章 树和二叉树
6.1 树的定义和基本术语
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.3 遍历二叉树和线索二叉树
6.3.1 遍历二叉树
6.3.2 线索二叉树
6.4 树和森林
6.4.1 树的存储结构
6.4.2 森林与二叉树的转换
6.4.3 树和森林的遍历
6.5 树与等价问题
6.6 赫夫曼树及其应用
6.6.1 最优二叉树(赫夫曼树)
6.6.2 赫夫曼编码
6.7 回溯法与树的遍历
6.8 树的计数
第7章 图
7.1 图的定义和术语
7.2 图的存储结构
7.2.1 数组表示法
7.2.2 邻接表
7.2.3 十字链表
7.2.4 邻接多重表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.4 图的连通性问题
7.4.1 无向图的连通分量和生成树
7.4.2 有向图的强连通分量
7.4.3 最小生成树
7.4.4 关节点和重连通分量
7.5 有向无环图及其应用
7.5.1 拓扑排序
7.5.2 关键路径
7.6 最短路径
7.6.1 从某个源点到其余各顶点的最短路径
7.6.2 每一对顶点之间的最短路径
第8章 动态存储管理
8.1 概述
8.2 可利用空间表及分配方法
8.3 边界标识法
8.3.1 可利用空间表的结构
8.3.2 分配算法
8.3.3 回收算法
8.4 伙伴系统
8.4.1 可利用空间表的结构
8.4.2 分配算法
8.4.3 回收算法
8.5 无用单元收集
8.6 存储紧缩
第9章 查找
9.1 静态查找表
9.1.1 顺序表的查找
9.1.2 有序表的查找
9.1.3 静态树表的查找
9.1.4 索引顺序表的查找
9.2 动态查找表
9.2.1 二叉排序树和平衡二叉树
9.2.2 B树和B+树
9.2.3 键树
9.3 哈希表
9.3.1 什么是哈希表
9.3.2 哈希函数的构造方法
9.3.3 处理冲突的方法
9.3.4 哈希表的查找及其分析
第10章 内部排序
10.1 概述
10.2 插入排序
10.2.1 直接插入排序
10.2.2 其他插入排序
10.2.3 希尔排序
10.3 快速排序
10.4 选择排序
10.4.1 简单选择排序
10.4.2 树形选择排序
10.4.3 堆排序
10.5 归并排序
10.6 基数排序
10.6.1 多关键字的排序
10.6.2 链式基数排序
10.7 各种内部排序方法的比较讨论
第11章 外部排序
11.1 外存信息的存取
11.2 外部排序的方法
11.3 多路平衡归并的实现
11.4 置换一选择排序
11.5 最佳归并树
第12章 文件
12.1 有关文件的基本概念
12.2 顺序文件
12.3 索引文件
12.4 ISAM文件和VSAM文件
12.4.1 ISAM文件
12.4.2 VSAM文件
12.5 直接存取文件(散列文件)
12.6 多关键字文件
12.6.1 多重表文件
12.6.2 倒排文件
附录A 名词索引
附录B 函数索引
参考书目

4. c语言指令有哪些啊

第一章:绪论?
内核版本号格式:x.y.zz-www/x为主版本号,y为次版本号,zz为次次版本号,www为发行号/次版本号改变说明内核有重大变革,其偶数为稳定版本,奇数为尚在开发中的版本

第二章:基础?
文件种类:-:txt,二进制/d:目录/l:链接文件(link)/b:区块设备文件/c:字符设备文件/p:管道
目录结构:bin:可执行/boot:开机引导/dev:设备文件/etc:系统配置文件/lib:库文件/mnt:设备挂载点/var:系统日志/
命令:rmdir:删除空目录/find [path] [expression]/touch命令还可以修改指定文件的最近一次访问时间/tar -czvf usr.tar.gz path/tar –zxvf usr.tar.gz/tar –cjvf usr.tar.bz2 path/tar –jxvf usr.tar.bz2
gcc:预处理:-g/I在头文件搜索路径中添加目录,L在库文件搜索路径中
gdb:设置断点:b/查看断点信息:info
Makefile:make –f other_makefile/<:第一个依赖文件的名称/@:目标文件的完整名称/^:所有不重复的依赖文件/+:所有依赖文件(可能重复)

第三章:文件IO
read:read(fd, temp, size); /读fd中长度为size的值到temp/返回0表示file为NULL
write:write(fd, buf, buf_size); /写长度为buf_size的buf内容到fd中
lseek:lseek(fd, offset, SEEK_SET); /从文件开头向后增加offset个位移量
unlink:从文件系统中删除一个名字
open1:int open(const char * pathname, int flags, mode_t mode);/flags为读写方式/mode为权限设置/O_EXCL:测试文件是否存在/O_TRUNC:若存在同名文件则删除之并新建
open2:注意O_NONBLOCK
mmap.1:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);
mmap.2:mmap(start_addr, flength, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
fcntl:上锁/int fcntl(int fd, int cmd, struct flock * lock);/对谁;做什么;设置所做内容
select:fd_max+1,回传读状况,回传写状况,回传异常,select等待的时间/NULL为永远等待/0为从不等待/凡需某状况则用之,反则(fd_set *)NULL之
FD_*那几个函数……
一般出错则返回-1

第四章:文件与目录
硬链接与符号链接?
chdir改变目录
0:in/1:out/2:err

第五章:内存管理
可执行文件存储时:代码区、数据区和未初始化区
栈:by编译器,向低址扩展,连续,效率高/堆:by程序员
/etc/syslog.conf,系统log记录文件/优先级为-20时最高

第六章:进程和信号
程序代码、数据、变量、文件描述符和环境/init的pid为1
execl族:int execl(const char * path, const char * arg, ....);/path即可执行文件的路径,一般为./最后一个参数以NULL结束
waitpid:waitpid(pid_t pid,int * status,int options);/option:一般用WNOHANG,没有已经结束的子进程则马上返回,不等待
kill:int kill(pid_t pid,int sig);/发送信号sig给pid
void (*signal(int signum, void(* handler)(int)))(int);/第一个参数被满足时,执行handler/第一个参数常用:SIG_IGN:忽略信号/SIG_DFL:恢复默认信号

第七章:线程
sem_init(sem_t *sem, int pshared, unsigned int value)/pshared为0/value即初始值

第八章:管道
1:write/0:read

第九章:信号量、共享内存和消息队列
临界资源:操作系统中只允许一个进程访问的资源/临界区:访问临界资源的那段代码
信号量:建立联系(semget),然后初始化,PV操作,最后destroy
共享内存没有提供同步机制

第十章:套接字
UDP:无连接协议,无主客端的区分/实时性
TCP:字节流/数据可靠性/网络可靠性
数据报:SOCK_STREAM/SOCK_DGRAM

其它
管道一章的both_pipe即父子进程间的全双工管道通讯
关系到信号和互斥的服务器-客户端程序
线程一章的class的multi_thread文件夹下的thread8.c

int main(void)
{
int data_processed;
int file_pipes_1[2];
int file_pipes_2[2];
char buffer[BUFSIZ + 1];
const char some_data[] = "123";
const char ch2p[] = "this is the string from child to the parent!";
const char p2ch[] = "this is the string from parent to the child!";
pid_t fork_result;
memset(buffer,'\0',sizeof(buffer));

if(pipe(file_pipes_1) == 0){

if(pipe(file_pipes_2) == 0){

fork_result = fork();
switch(fork_result){
case -1:
perror("fork error");
exit(EXIT_FAILURE);
case 0://child
close(file_pipes_1[1]);
close(file_pipes_2[0]);
printf("in the child!\n");

read(file_pipes_1[0],buffer, BUFSIZ);
printf("in the child, read_result is \"%s\"\n",buffer);

write(file_pipes_2[1],ch2p, sizeof(ch2p));
printf("in the child, write_result is \"%s\"\n",ch2p);
exit(EXIT_SUCCESS);
default://parent
close(file_pipes_1[0]);
close(file_pipes_2[1]);
printf("in the parent!\n");

write(file_pipes_1[1], p2ch, sizeof(p2ch));
printf("in the parent, write_result is \"%s\"\n",p2ch);

read(file_pipes_2[0],buffer, BUFSIZ);
printf("in the parent, read_result is \"%s\"\n",buffer);

exit(EXIT_SUCCESS);
}
}
}
}

#ifndef DBG
#define DBG
#endif

#undef DBG
#ifdef DBG
#define PRINTF(fmt, args...) printf("file->%s line->%d: " \
fmt, __FILE__, __LINE__, ##args)
#else
#define PRINTF(fmt, args...) do{}while(0);
#endif

int main(void)
{
PRINTF("%s\n", "hello!");
fprintf(stdout, "hello hust!\n");
return 0;
}

#define N 5
#define MAX 5

int nput = 0;
char buf[MAX][50];
char *buffer = "";
char buf_r[100];
sem_t mutex,full,avail;

void *proctor(void *arg);
void *consumer(void *arg);
int i = 0;

int main(int argc, char **argv)
{
int cnt = -1;
int ret;
int nput = 0;

pthread_t id_proce[10];
pthread_t id_consume;

ret = sem_init(&mutex, 0, 1);

ret = sem_init(&avail, 0, N);

ret = sem_init(&full, 0, 0);

for(cnt = 0; cnt < 6; cnt ++ ){
//pthread_create(&id_proce[cnt], NULL, (void *)proctor, &cnt);
pthread_create(&id_proce[cnt], NULL, (void *)proctor, (void *)cnt);
}
pthread_create(&id_consume, NULL, (void *)consumer, NULL);

for(cnt = 0; cnt < 6; cnt ++){
pthread_join(id_proce[cnt], NULL);
}
pthread_join(id_consume,NULL);

sem_destroy(&mutex);
sem_destroy(&avail);
sem_destroy(&full);
exit(EXIT_SUCCESS);
}
void *proctor(void *arg)
{
while(1){
sem_wait(&avail);
sem_wait(&mutex);
if(nput >= MAX * 3){
sem_post(&avail);
//sem_post(&full);
sem_post(&mutex);
return NULL;
}

sscanf(buffer + nput, "%s", buf[nput % MAX]);
//printf("write[%d] \"%s\" to the buffer[%d]\n", (*(int*)arg), buf[nput % MAX],nput % MAX);
printf("write[%d] \"%s\" to the buffer[%d]\n", (int)arg, buf[nput % MAX],nput % MAX);
nput ++;
printf("nput = %d\n", nput);

sem_post(&mutex);
sem_post(&full);
}
return NULL;
}

void *consumer(void *arg)
{
int nolock = 0;
int ret, nread, i;
for(i = 0; i < MAX * 3; i++)
{
sem_wait(&full);
sem_wait(&mutex);

memset(buf_r, 0, sizeof(buf_r));
strncpy(buf_r, buf[i % MAX], sizeof(buf[i % MAX]));
printf("read \"%s\" from the buffer[%d]\n\n",buf_r, i % MAX);

sem_post(&mutex);
sem_post(&avail);
//sleep(1);
}
return NULL;
}

5. 怎样使用C语言列出某个目录下的文件

C语言本身没有提供象dir_list()这样的函数来列出某个目录下所有的文件。不过,利用C语言的几个目录函数,你可以自己编写一个dir_list()函数。 首先,头文件dos.h定义了一个find_t结构,它可以描述DOS下的文件信息,包括文件名、时间、日期、大小和属性。其次,C编译程序库中有_dos_findfirst()和_dos_findnext()这样两个函数,利用它们可以找到某个目录下符合查找要求的第一个或下一个文件。 dos_findfirst()函数有三个参数,第一个参数指明要查找的文件名,例如你可以用“*.*”指明要查找某个目录下的所有文件。第二个参数指明要查找的文件属性,例如你可以指明只查找隐含文件或子目录。第三个参数是指向一个find_t变量的指针,查找到的文件的有关信息将存放到该变量中。 dos_findnext()函数在相应的目录中继续查找由_dos_findfirst()函数的第一个参数指明的文件。_dos_findnext()函数只有一个参数,它同样是指向一个find_t变量的指针,查找到刚文件的有关信息同样将存放到该变量中。 利用上述两个函数和find_t结构,你就可以遍历磁盘上的某个目录,并列出该目录下所有的文件,请看下例: #include <stdio.h> #include <direct.h> #include <dos.h> #include <malloc.h> #include <memory.h> #include <string.h> typedef struct find_t FILE_BLOCK void main(void); void main(void){FILE_BLOCK f-block; /* Define the find_t structure variable * / int ret_code; / * Define a variable to store the return codes * / / * Use the "*.*" file mask and the 0xFF attribute mask to list all files in the directory, including system files, hidden files, and subdirectory names. * / ret_code = _dos_findfirst(" *. * ", 0xFF, &f_block); /* The _dos_findfirst() function returns a 0 when it is successful and has found a valid filename in the directory. * / while (ret_code == 0){/* Print the file's name * / printf(" %-12s\n, f_block, name); / * Use the -dos_findnext() function to look

6. 如何用C语言获取目录下的文件和目录列表

#include <stdio.h>
#include <stdlib.h>

void main()
{
system("DIR /D C:\\ /s /B > a.log");
}

C:\下的所有文件夹,子文件夹里所有文件,转向到 文本文件 a.log 里。
格式:
C:\aaa\bbb\ccc\...

只要文件夹命令:
dir /d c: /B /ad
只要文件夹命令,含子文件夹:
dir /d c: /B /ad /s