首页 > 其他分享 >C语言学习

C语言学习

时间:2022-11-04 20:36:28浏览次数:54  
标签:stat int argv C语言 学习 opendir include dp

文件系统:

  1.inode

    本质是结构体,

    存储文件属性信息:

        1.权限

        2.类型

        3.大小

        4.时间

        5.用户

        6.盘块位置

 

  2.dentry

stat函数:

  int stat(const char *path,struct stat *buf)

  参数:

    path:文件路径

    buf:(穿书参数)存放文件的路径

  返回值:

    成功:0

    失败:-1 errno

通过stat函数获取文件大小和时间

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <sys/stat.h>
 5 int main(int argc,char *argv[]){
 6 struct stat sbuf;
 7 int ret=stat(argv[1],&sbuf);
 8 if(ret==-1){
 9     perror("stat error");
10     exit(1);
11 
12 }
13 printf("file size:%ld\n",sbuf.st_atime);
14 printf("file size:%ld\n",sbuf.st_size);
15 return 0;
16 }

 

通过stat函数获取文件类型,遍历目录,下面这个例子,在man配置里面有举例

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<unistd.h>
 5 #include<pthread.h>
 6 #include<dirent.h>
 7 int main (int argc, char *argv[]) {
 8 
 9     DIR *dp;
10     struct dirent *sdp;
11     if (argc < 2) {
12         printf("usage error!");
13         exit (1);
14     }
15     dp = opendir (argv[1]);
16     if (dp == NULL) {
17 
18         perror ("opendir error");
19         exit (1);
20     }
21     while ((sdp = readdir (dp)) != NULL) {
22         if ((strcmp (sdp->d_name, ".") == 0) || (strcmp (sdp->d_name, "..") == 0)) {
23             continue;
24         }
25         printf("%s\t", sdp->d_name);
26     }
27     printf("\n");
28     closedir (dp);
29 
30     return 0;
31 }

 

目录操作函数:

  opendir()

  closedir()

  readdir()

递归遍历目录:ls -R .c

  1.判断命令行参数,获取用户要查询的目录名. argv[1]

    argc==1 ---> ./

  2.判断用户指定的是否是目录. stat S_IDDIR()---->封装函数isFile

  3.读目录

    opendir(dir)

    while(readdir()){

      普通文件,直接打印

      目录:拼接目录访问绝对路径.sprintf (path,""%s%s"",dir,d_name)

        递归调用自己.--->opendir readdir closedir

    }

    closedir()

 

标签:stat,int,argv,C语言,学习,opendir,include,dp
From: https://www.cnblogs.com/miwaiwai/p/16845832.html

相关文章

  • 【单片机/嵌入式】【梁山派】学习日志05:库函数点灯
    库函数点灯一、配置流程(1)开启GPIO的端口时钟(2)配置GPIO的模式(3)配置GPIO的输出对LED2接的PD7进行配置。在使用库函数之前,我们需要了解到,GD32官方帮我们做好了这一套库......
  • C++ ofstream学习
    转自:https://blog.csdn.net/kingstar158/article/details/68593791.介绍#include<fstream>ofstream//文件写操作内存写入存储设备ifstream//文......
  • Vue 2.x源码学习:应用初始化大致流程
    我们使用vue-cli搭建vue2.x项目时,大致由如下代码来做一个vue应用的初始化:importVuefrom"vue";importAppfrom"./App.vue";Vue.config.productionTip=false;n......
  • 《SRE实战手册》学习笔记之SRE落地实践
    转载:https://www.cnblogs.com/imyalost/p/15894494.html前面介绍了SRE的基础,包括SLI和SLO以及ErrorBudget(错误预算)。其中:SLI是衡量系统稳定性的指标;SLO是每个指标对......
  • salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧
    本篇参考:https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-alert-confirm-prompthttps://help.salesforce.com/s/article......
  • 第一周 学习进度汇报
    第一周本周学习进度汇报:理论学习了解了Attention机制。第一次看Transformer论文看不懂绕了弯路,经过老师提醒便改正方向。参考学习资料有:李宏毅老师机器学习课自注意力......
  • Treap学习笔记
    Treap学习笔记一、Treap(有旋)(一)前置知识:前驱:当前序列中小于目标数字的数的最大值后继:当前序列中大于目标数字的数的最小值二叉搜索树BST(二)变量定义:ch[u......
  • 矩阵树定理学习笔记 & 洛谷 P4111 [HEOI2015]小 Z 的房间 题解
    矩阵树定理拉普拉斯矩阵无边权设无向图\(G\)有\(n\)个结点,则拉普拉斯矩阵\(L\)是一个\(n\timesn\)的矩阵,满足:\(L_{i,i}(i\inG)\)的值为结点\(i\)的度数......
  • 对于邻接表的认识和学习心得
    存图的方式有两种:一.邻接矩阵法(或关联矩阵)就是一个简单的整数型二维数组。二.邻接表法(重点讲解)它是一种顺序存储(结构体数组)和链式存储(链表)结合的存储方法,它......
  • 「学习笔记」组合计数与中国剩余定理
    「学习笔记」组合计数与中国剩余定理点击查看目录目录「学习笔记」组合计数与中国剩余定理知识点排列错排列组合数式子一些性质卢卡斯定理谔项式定理谔项式反演形式零......