精华内容
下载资源
问答
  •  在C语言学习了一段时间之后,我们开始入了课程设计。初学了一些简单的语法之后,感觉要完成一项工程还是有些困难的。    听说在写课程设计时,比起一下子打出来完,不如分模块,分功能的有步骤的去写。   ...

     在C语言学习了一段时间之后,我们开始入了课程设计。初学了一些简单的语法之后,感觉要完成一项工程还是有些困难的。
        听说在写课程设计时,比起一下子打出来完,不如分模块,分功能的有步骤的去写。
        课程设计的核心,是对链表的操作,实现动态链表的增、删、改、查。这里主要说一下课程设计的思路和想法。

    1.显示主菜单

    在复杂面前,先做一些微不足道的小工作。先把菜单的内容写了出来,在主函数里调动menu()就会出来这个直接显示的界面。

    79bf0e6f8424b8162ac66f81fde8878d.png

    1.png

        其实一开始,考虑到menu()只是用来显示,我就把它定义成了void型,后来在学长的提醒下,把void改为了int,原来在一些其他的编译器里,void型被淘汰或者是会报错。为了养成良好的编程习惯,就把剩下的void都改成了int或其他。

    2.操作菜单

    接下来,在操作菜单里,填写以下内容 :

    50cf2a09fdf80ce11f48dab1b006026d.png

    2.png

        这个就是提供一个选择功能的途径,至于功能,之后再补全,总之先把位置留出来。
       通过输入数字的方式来选择功能,在1--8的范围内(图中的printf是添加读档功能前的7个,不必在意),输入正确就让flag=1,如果输入其他的,那就循环回来重输。
        至于那个while里的判断(真or假),只要n不在1--8,就一直为真,一直循环,当然你要是高兴,把(flag==0)换成(1)也行。

    b673b241fdc39b3d214f07f3168af22a.png

    3.png

    上一步对flag的操作,目的就是为了引出下面的循环,在正确的选择功能里,通过swich实现相关功能的函数调动,n也就是用到这里,当然在一开始并没有这些函数,我只是写了printf和break而已。

    为了方便起见,我把switch里的内容先折叠一下。

    0a7fba824ec5ace29323634fba256c6c.png

    4.png

        在你选择并实现了相关功能以后,顺序执行,在125行进行询问是否继续,并且通过getchar()来获取一个字符。如果y(yes),再次获取n,再次循环,周而复始。
         如果输入其他的,那就直接退出了exit(0)。
        (函数exit()通常是用在子程序中用来终结程序用的,要加上头文件#include)。

    3.创建链表

        说起创建链表,大家都有自己的做法。我的做法就是定义了两个结构体指针,先共同赋了一片空间,为p1赋值,(图中的sca就是我调动赋值的函数)。

    e0ec0de65d526ed0b3e19a51e912e3c1.png

    sca.png

    其实再一开始,我就声明了一个全局变量:struct work*head=NULL;
        在之后的对链表操作都是在对头进行操作。让链表停止的操作,就是在初始化时,使工号为0。在第一个节点时,需要特殊处理一下,即令p和head指向同一片空间,这样就能起到 拿起链表头就能拿起一串的效果。

        之后的操作就司空见惯了,让p1申请空间并赋值,再让p2指向p1所开辟的新空间,循环往复的增加节点,直到工号为0时停止。

    最后,别忘了单链表的尾要置空。最后的返回值就是把“头head”返回去了,因而可以实现case 1里的 head=creat(head)了。

        *那个system("cls")是后来为了美观加上的,在前期修改时为了及时的反馈问题,尽量不要加。

    4.显示节点和链表

    刚刚做了一套貌似复杂的操作,现在我们来看一些轻松的东西。

    在我们对链表进行操作时,难免要经常查看节点和整个链表,要是每次都输出的话那是多么的繁琐,不如直接调动函数。我就写了两个方便自己查看的,一个是看单个节点

    f983d71733ae5a401dca7d445dee1709.png

    node.png

    如你所见,传入参数结构体指针,把每一个数据成员都显示出来。

    361d877ceefec3b06997f1e9463c3b39.png

    list.png

    另一个是显示整个链表,把头head传进来,为了防止对head进行误操作,临时定义结构体指针p。令p和head指向同一片空间,再通过 do-while 对p进行遍历。在printnode()的基础上输出一个一个又一个的节点。

    5.增加

    毫无疑问,这是这里面最简单的功能操作。

    在这个函数里面,你甚至不需要具体的完全遍历。

    d19028d69d9826d449f825687516745e.png

    add.png

        如你所见,为了图方便,我甚至都没有去找最后的节点插入,而是就直接放到了头结点的后面。反正就算只有一个节点也可以放到后面。

    6.查找

        除了增加以外,最简单的就算是查找了,因为这个遍历的过程,会是其他功能的基础。

    809dc67094e3cd4a26b2e92448fde767.png

    find.png

    图中for循环的过程,就是链表遍历的过程,在一遍的搜索之后,如果出现的需要的东西,那就停止搜索,可以拿出来操作了。这里只是作为显示,并不需要操作什么。

    图中的continue是考虑到会有工号重复的情况。

    7.删除

    546a87b010542459c9e5b1ab410f4efb.png

    delete.png

        进入了删除模式之后,会有两个选项,按工号或者姓名删除,其实原理都一样,这里就以工号删除为例。

        令新的指针代替头指针实现遍历(213),判断出来要删除的节点之后,再进行一次判断:你要删除的,是头结点,还是其他的。

    a.头结点删除:

        直接让指针指向下一位,释放掉原本的第一个,再让头指针重新指向原本的第二个。这里实现的过程就是pt比pt2多走了一位,以便进行操作。

    b.其他节点:

        直接令p2的后继指向pt的后继,也就是把pt直接隔过去,再进行释放。
    至于下面的if,如你所见,它的功能就是在while循环里,使指针不断向后推进,直至目标出现。

        当然了,按姓名删除的操作几乎一模一样,唯一的一点小区别就是,if的判断变成了这样:if( strcmp(name,pt->name)==0 )
    需要判断这两个字符串是否一致,完全一致的话,返回值就是0了,就能找到该节点了。strcmp需要头文件.

    7.修改

    eba6642a9e943450ff1533068cb02388.png

    modify.png

        写之前感觉修改会很难,大概是不小心走了什么歪门邪道吧,写出来发现它的过程和遍历一样简单,无非是在我找到相关pt之后,又为它重新赋值了一遍而已(你当然会记得那个sca是我之前定义的赋值函数)。

    排序!

        如果你特别熟练链表以及它的增删改查,那么前面写的实在是基础。而排序的确让我为难困惑了一番。

    a.冒泡的错

        再最开始版本的排序里,我尝试了用冒泡排序对工号进行操作,排的过程也比较简略。可排出来之后感觉哪里好像有点不对,原来当时只是把num排了顺序,结果是其他的就乱了。

    d5d2bd72f4fa636e668ab928c3fad2cb.png

    mp.png

    如你所见,它繁琐而低效(关键是还不对...)。

        其实当时忘了一点,为什么不直接声明一个结构体变量,然后把它当做中间变量进行排序呢?

    b.选择排序

    并没有顺着那个思路想下去,换了个方法。

        思想:如果说,原本的链表是无序的,而我最终的目的是创造出有序的。而且我有能力去找到这里面最大的或最小的(遍历就可以了),那么我何不再去创建一个新的链表,它是由原本链表摘出来的节点所组成,那必然是有序的。

    2ea4ef86875597ecc765c586f118c296.png

    sort.png

        和其他操作的最开始一样,传入了头和它之后的一串链表,于以往不同的是,这次开始了直接对头指针的操作。
    (366和367是为了防止传进来一个空头造成错误。

    核心代码就是white里的循环了:

    第一层循环

        目的是为了让头不断向后遍历,只不过这次的目的,就是遍历到终点。期间每执行一次,就让我定义的指针重新指向同一块。

    第二层循环

        p(也就是头)的遍历,如果后一个大于前一个,就让后一个成为max,同时定位它的前一个节点,以这种方式标记过后,p再继续向后推进,以实现在循环过后,可以过滤出来最大的,找到了又怎样呢,我们来看接下来的操作。

    第一个if(379)

        这时还要考虑到那种情况,也就是头结点万一最大该怎么操作,这也并不难想,直接让head指向下一位,同时断开max(也就是头)与原链表的联系。
    其它情况就是,既然上一步(371 while)找出来了max,那么就在这里把它摘出来,令刚刚标记的前一项(pre)指向max的后继,在断开max与原表的联系。

    第二个if(387)

        细心的你会发现,在每次的赋值里和之前的几步操作里,都没有用到pnew,不仅如此,它还在一开始就被置空了。
    我的目的就是让它成为那个新的链表的头。在之前几步,我们分别找到了max,分离出了max,终于要在这一步为max找一个着落了。

        当然,if第一次肯定是会执行的(因为上来就让pnew置空了),我们让最大的那个节点成了新链表的第一个,那么可想而知的是,在之后几次的循环里,每次都会执行else,并且在里面新摘出来的max被一个个的连到了链表的后面。

        到最后,别忘了还有那个大循环的,它每次执行一遍里面的内容。如是,原本的无序链表每次少一个节点(最大的节点),而新有序链表每次会多一个。

        原链表终结之日,也就是新链表生成之时。届时,循环也就彻底结束了,于是我们令头指针指向那个新生链表(394),再让它们共同指向这条有序的链表,传回去就行了。


        到了这里,课程设计也就基本上结束了,增删改查带排序都说完了,如果你觉得意犹未尽,我们的学长学姐提出了一个新的要求:该怎么做,才可以让你的数据保存下来,让我下次打开时还能看到这次的数据,下次开机时它们还在这里?

    emmm....

    对文件的操作

        在学文件的时候,我总觉得这块的内容可以在今后用到的时候及搜及学。要实现如上功能,需要fwrite和fread :

    (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

    其中,ptr:指向保存结果的指针;size:每个数据类型的大小;count:数据的个数;stream:文件指针
       函数返回读取数据的个数。

    (2)size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
           其中,ptr:指向保存数据的指针;size:每
    个数据类型的大小;count:数据的个数;stream:文件指针
        函数返回写入数据的个数。

    举个小例子:fwrite(p,sizeof(int),1,fp )
        这就是个每次向fp里存一个整型的,p就是那个要存到文件里的指针。
    read同理,不表。

        原本是要在每个功能的后面都加上这么一个写入文件的,后来在学长的提醒下,把最后一个功能改成了“保存并退出”,合理了不少。

    save

    6cbf28c5a906fa89e87cfd80c5f29f25.png

    save.png

        如我这个save函数:fopen打开,司空见惯。利用for循环,使pt从头到尾的指一遍,每次把一个struct work存进去,也就是一个节点,以这种方式把整条链表存进去。

    read

    7b57205487f664a325f8969fd8611252.png

    read.png

        你会发现,这是个没有穿入参数的结构体函数,在直至文件fp的结尾之前,一直进行着循环。fread的返回值是写入数据的个数,也就是说每次从文件里面读一个,直到最后一个.

    else的作用是把每一个节点都显示出来,显得有那么一点合情合理...

    那每次读出来的节点都去了哪里呢?
        这个和刚刚说的排序思路差不多,让head指向和pt一样的空间后,循环申请空间,每次都存入一个从文件里读出来的节点。形成了一条以head为头的新的链表(也就是上次你退出时的数据),被传回来得以继续操作。

        这样,你也就得到了一个,可以增删改查排序的,还能记
    录数据的课程设计了。


    7b6987cf69dea719bd0ad371a337d885.png

    over.png

    写课程设计,对于初学者来说是个漫长而复杂的过程,一筹莫展和万念俱灰的想法总是交相辉映。虽然有时也会绝望(比如我第一次运行有好几十个错误),但这就是个从中学习的过程。
    把代码一点一点的改对,是个愉悦而有成就感的事。

    展开全文
  • 现在开始自己的时间多出来很多很多,所以决定重新开始学习计算机...所以从今天开始,我准备在这里记录下我学习C语言的笔记,一是激励自己努力学下去,二是希望能够有也在学习C语言的同学一起互现参考和学习。我一定...

    4814ccccf5e8bc7964b3451ec45df2db.png

    现在开始自己的时间多出来很多很多,所以决定重新开始学习计算机编程,也许在将来能够实现自己独立编写macOS和iOS平台app的愿望。

    要学习学会Apple最新编程语言swift,得先从最基础的C语言学起。所以我仿佛回到了大学时代,自学起macOS平台上的C语言来。所以从今天开始,我准备在这里记录下我学习C语言的笔记,一是激励自己努力学下去,二是希望能够有也在学习C语言的同学一起互现参考和学习。我一定要坚持到全部学完!

    学习C语言,先从终端说起。macOS系统安装过Xcode后自带的终端可以实现C语言的编写和编译,这一点非常好,也不需要另外安装什么程序。Xcode也是app store中免费的软件。

    1.0.0 终端

    macOS中的终端这个程序是放在“应用程序”中的“实用工具”文件夹中,打开以后界面是这个样子的:

    4f148d2e9cb5763ee99f2ddd51ff75ab.png

    1.1.0 终端的常用命令

    用于C语言学习的常用终端命令有如下几个:

    • pwd 显示工作路径;
    • ls list清单,显示当前工作路径下所有文件或文件夹
    • ls -l 详细显示
    • cd 更改当前工作路径
    • mkdir 在当前工作路径下创建文件夹
    • clear 清空屏幕信息
    • touch 在当前工作路径下创建一个空文件

    1.2.0 C语言在终端中的使用方法

    macOS X系统内的终端自带C语言的编译器,所以我们可以通过在终端中输入一定的命令,直接创建C语言的程序文件。

    1.2.1 C语言在终端中创建的一般步骤

    1. 可以使用pwd命令,显示当前的工作路径,以确认是否要在当前工作路径内建立C语言文件;
    2. 使用cd命令,进入想要创建C语言文件的工作路径;
    3. 同时也可以使用mkdir建立文件夹;
    4. 使用touch命令创建一个.c文件;
    5. 双击打开这个.c文件,编辑其内容,内容需要符合C语言的语法规范;
    6. 编辑完毕后,关闭保存这个.c文件;
    7. 在终端中输入“cc -c *.c”,会生成一个同样名字的.o文件;
    8. 在终端中输入“cc *.o”,会生成一个a.out文件;
    9. 在终端中输入“./a.out”,即可运行刚才编辑的C语言程序。

    1.2.2 C语言在终端中运行的注意事项

    1. 创建的一定是.c文件;
    2. .c文件的内容除了双引号内的内容,必须用英文输入法;
    3. 在终端中输入“cc -c 源文件名称”,会生成一个.o文件(目标文件),这个过程是编译的过程;
    4. 在终端中输入“cc 目标文件”,会生成一个a.out文件,这个过程是链接(添加启动代码);

    ⚠️另外需注意: C语言严格区分大小写;

    改源文件后要重新编译和链接;

    n是换行符;

    输入“cc *.c” 可以直接编译和链接。

    可以尝试在你的第一个C语言文件中输入如下内容:

     # include<stdio.h>
     int main()
     {
     printf(“Hello, World!n”);
     return 0;
     }

    接下来是我尝试输入这第一个C语言文件的截图过程:

    18dbf0e631133776fd0ddf676726dfb7.png

    23b209273467e1c39a27b50da414617e.png

    5f1cb2ffd27d22ab523138980688e3dd.png

    b5599f6648e2a0e192bf66bc7dc8f08d.png

    f0ddbc7973c543d25bddf0e0313460a7.png

    348052becddf0d377affbb65170e928c.png

    至此,第一个简单的C语言程序就在终端中实现了。

    感觉后面的学习之路还有很长很长一段要走,加油!


    完整学习笔记会完全记录在我的个人网站和知乎上,另外,在完成学习笔记后我的个人网站还会有epub文件的下载,免费提供下载,敬请大家期待!

    我的个人网站:

    https://beautylife.pub/​beautylife.pub

    C语言学习笔记的网址:(持续更新)

    C语言学习 - BeautyLife Studio​beautylife.pub
    a67d1f1487f8c3687bcaface94720ec4.png

    感谢提供我个人网站服务器空间的优网主机:

    优网主机 - 安全稳定、简单易用!​my.youwebcloud.com
    56f07ff997bb04878d7139864e2aa7ff.png

    我的C语言学习笔记专栏:

    我的C语言学习笔记​zhuanlan.zhihu.com
    a293400609c961f6d8cbe7829cdcc2f6.png
    展开全文
  • C语言遍历文件下指定后缀文件(包括子文件夹)
  • "NO.1篇幅较长,请空闲时观看前言整个项目包括三个文件——mylist.h | —mylist.c | —student.cmylist.h和mylist.c写有...基于C语言的学生管理系统(含文件)(一)上篇文章中主要讲了学生信息管理系统的界面内容,本...

           "点击上方“蓝色字”,关注我们哦(*^▽^*)!"


    07895c84547de25ef3275bf0833fc6e6.gif

    NO.1

    篇幅较长,请空闲时观看

    前言 整个项目包括三个文件 ——mylist.h     |     —mylist.c     |     —student.c mylist.h和mylist.c写有链表创建和文件读写,student.c则是写界面和功能。基于C语言的学生管理系统(含文件)(一) 上篇文章中主要讲了学生信息管理系统的界面内容,本文将重点介绍单链表的创建和文件的读写操作。 单链表

    什么是链表?

    链表是一种链式存储的数据结构,与内存存储连续的数组不同,链表中以结点为单位,相邻结点用指针相连,结点在内存中也不是连续存储的。

    结点包括数据域和指针域,每个结点只有一个链域的链表称为单链表

    节点结构

    7cef1895a53d42e2622ddfca1c576691.png

    单链表结构

    069bde034958b6bb6c30cb748f42fc89.png

    本文中单链表与项目结合讲解。

    首先用结构体声明学生信息和链表结点,结点中又包括学生信息和指向结点的指针,这样结点即可以存放数据,又可以指向下一个结点。

    struct student//学生信息
    {

    创建一个链表

    链表有很多种,在这只介绍最简单的单链表(含空头结点)。首先创建一个空头结点,链表的增长都在这个头结点的基础上进行。

    5eb2d1f84a548d2d3db22e66de91e4f1.png

    //创建一个有表头链表

    创建一个新结点并插入到链表中

    将结点插入链表分为两种情况:

    一是链表中一个结点也没有,那么可以直接将新结点插入到头结点后面;

    二是链表中已经有了结点,则不仅要将头结点指向新节点,还要将新结点指向先前头结点的下一个结点(头插法)。

    单链表插入图形

    f966a75045a8ee577afeed03067a8608.png

    //创建一个新结点

    删除结点

    从链表中删除指定结点,就是将结点从链表中摘除以及将删除结点所占的内存空间释放。

    拆除结点只需将所删除结点的前驱结点直接指向所删除结点的后驱结点即可。

    最终使用free()手动释放该结点。

    项目中使用学号和姓名删除学生,源码类似,只展示按学号的代码。(下文查找,排序亦是如此)

    单链表删除图形

    de192cdcd5cea1574c935d5e30c38282.png

    //按学号删除学生信息

    查找结点

    从头结点开始遍历整个链表,将要查找的学生学号与结点数据域的学生学号一一对比,查找成功则返回该结点,并将该学生信息打印到界面上。

    //按学号查找学生
    //打印查找的学生信息

    排序结点

    采用冒泡排序将链表排序,即每次比较两个相邻的结点数据域,如果它们的顺序错误就把它们交换过来。

    void sortList_byid(struct Node *StudentListhead)//按学号排序{

    文件写入

    创建文件指针使用fopen()关联指定文件,创建临时指针遍历链表,然后使用fprintf()将链表中的数据写入到文件中,最后关闭文件流。

    //将学生信息存入文件

    文件读取

    创建文件指针使用fopen()关联指定文件,创建临时结构体变量,遍历文件,使用fscanf()读取文件中内容到临时变量,再将临时变量插入到链表中,最后关闭文件流。

    //从文件中读取学生信息

    以上便是项目的全部内容,希望对你有所帮助。

    公众号后台回复"学生"即可获取源码

    e4e3f0007f9e374c78a997abee28bf42.png作者:瑾年辰良一位热爱生活的快乐青年 bbf23fac4a1aacf057f8cf70d4c02865.png 555551c503d796fb143df2e31541ca05.png

    "即见君子,云胡不喜?"

    展开全文
  • C语言遍历文件

    千次阅读 2018-05-30 14:01:53
    原文:... 程序代码 遍历目录下的所有文件 复制代码 include include // for strcat() include include include // for strcpy(), strcat() in...

    原文:https://www.cnblogs.com/collectionne/p/6815924.html

    程序代码

    1. 遍历目录下的所有文件
    #include <iostream>
    #include <cstring>        // for strcat()
    #include <io.h>
    using namespace std;
    
    void listFiles(const char * dir);
    
    int main()
    {
        char dir[200];
        cout << "Enter a directory (ends with \'\\\'): ";
        cin.getline(dir, 200);
    
        strcat(dir, "*.*");        // 在要遍历的目录后加上通配符
        listFiles(dir);
    
        return 0;
    }
    
    void listFiles(const char * dir)
    {
        intptr_t handle;
        _finddata_t findData;
    
        handle = _findfirst(dir, &findData);    // 查找目录中的第一个文件
        if (handle == -1)
        {
            cout << "Failed to find first file!\n";
            return;
        }
    
        do
        {
            if (findData.attrib & _A_SUBDIR
                && strcmp(findData.name, ".") == 0
                && strcmp(findData.name, "..") == 0
                )    // 是否是子目录并且不为"."或".."
                cout << findData.name << "\t<dir>\n";
            else
                cout << findData.name << "\t" << findData.size << endl;
        } while (_findnext(handle, &findData) == 0);    // 查找目录中的下一个文件
    
        cout << "Done!\n";
        _findclose(handle);    // 关闭搜索句柄
    }

    程序遍历目录下的所有文件/目录,如果是文件则输出文件大小。

    注意_findnext()函数成功返回0,因此要加上==0或!=-1进行判断,不能省略。

    此外还有一个值得注意的地方:

    if (findData.attrib & _A_SUBDIR
        && strcmp(findData.name, ".")
        && strcmp(findData.name, "..")
    )

    使用_findfirst()、_findnext()进行搜索时,可能会得到”.”和”..”两个文件夹名。这两个值可以忽略。

    遍历目录中的所有文件

    注意是“目录中”而不是“目录下”,这个程序将会遍历一个目录里包含的所有文件。

    #include <iostream>
    #include <cstring>        // for strcpy(), strcat()
    #include <io.h>
    
    using namespace std;
    
    void listFiles(const char * dir);
    
    int main()
    {
        char dir[200];
        cout << "Enter a directory: ";
        cin.getline(dir, 200);
    
        listFiles(dir);
    
        return 0;
    }
    
    void listFiles(const char * dir)
    {
        char dirNew[200];
        strcpy(dirNew, dir);
        strcat(dirNew, "\\*.*");    // 在目录后面加上"\\*.*"进行第一次搜索
    
        intptr_t handle;
        _finddata_t findData;
    
        handle = _findfirst(dirNew, &findData);
        if (handle == -1)        // 检查是否成功
            return;
    
        do
        {
            if (findData.attrib & _A_SUBDIR)
            {
                if (strcmp(findData.name, ".") == 0 || strcmp(findData.name, "..") == 0)
                    continue;
    
                cout << findData.name << "\t<dir>\n";
    
                // 在目录后面加上"\\"和搜索到的目录名进行下一次搜索
                strcpy(dirNew, dir);
                strcat(dirNew, "\\");
                strcat(dirNew, findData.name);
    
                listFiles(dirNew);
            }
            else
                cout << findData.name << "\t" << findData.size << " bytes.\n";
        } while (_findnext(handle, &findData) == 0);
    
        _findclose(handle);    // 关闭搜索句柄
    }
    展开全文
  • c语言遍历文件夹

    2017-05-26 13:26:32
    c语言遍历文件夹
  • 主要介绍了C语言 实现遍历一个文件夹的所有文件的相关资料,需要的朋友可以参考下
  • 什么是枚举枚举是C语言中的一种基本数据类型,它可以用来声明一组常数(静态常量)。当一个变量有几个固定的可取值时就可以将其定义为枚举类型。枚举可以将变量值直接列出,使用时变量值只限于列举出的值范围内。很...
  • C语言遍历目录文件

    千次阅读 2019-10-19 21:32:26
    使用C语言的 opendir、readdir 函数读取遍历指定目录下的指定类型的文件
  • 为什么C语言要动态分配内存的意义?1.C语言中的一切操作都是基于内存的2.变量和数组都是内存的别名 ---内存分配由编译器在编译期间决定的 ---定义数组的时候必须指定数组长度 ---数组长度是在编译期就必须确定的需求...
  • 更多时候我们希望给定一个大概的路径,在这个路径下的所有文件夹里一层一层找,找到特定文件或者符合要求的文件,这里需要遍历文件,有两种主要的方法: 1. 基于 os.walk() os.walk 遍历后产生三个参数:当前文件夹...
  • C语言 遍历一个文件夹的所有文件

    万次阅读 2016-11-27 18:43:20
    #include #include int main (void) {  _finddata_t fileDir;  long lfDir;  if((lfDir = _findfirst(dir,&fileDir))==-1l)  printf("No file is found\n");  else{  
  • C语言遍历文件夹里所有文件

    热门讨论 2009-12-26 22:20:21
    直接编译可以运行。运行时输入盘符如"d:"或者输入文件夹如:“c:\\window”等。可能文件比较多,需要遍历一段时间。为了方便检测,最好自己制定一个文件比较少的文件夹。
  • 采用c语言编程,递归遍历一个文件夹中的所有文件,包括子文件夹
  • 咱们先和大家说好,本次C语言开发的扫雷游戏是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去写之后,运行报错。Easy X是很多和我一样的新手在学习的时候用到的一个绘图工具...
  • C语言遍历文件夹内容

    2012-11-17 12:20:00
    1、函数介绍 func.h ...* 摘 要:遍历文件加下%i_%i_%i_%i_%i.txt格式的文件,存储到数组中 * * 当前版本:1.0 * 作 者:whl * 完成日期:2012-11-17 */ #include "func.h" #includ...
  • c语言递归遍历指定文件夹下所有文件算法
  • C语言遍历目录代码

    2015-10-29 11:21:46
    C语言编写的遍历目录的代码,简单实用,要的拿去吧。
  • void printdir(char *dir, int depth) {  DIR *dp;  struct dirent *entry;  struct stat statbuf;... if( (dp = opendir(dir)) == NULL ){ ... fprintf(stderr,"cannot open directory: %s\n",
  • 一.使用指针 #include <stdio.h> #include <string.h> int main() { char *s="You are beautiful!"; for(int i=0;i<strlen(s);i++) { printf("%c",s[i]); } return 0;...二....#de
  • C语言遍历文件目录:readdir,opendir

    千次阅读 2018-12-04 15:12:25
    遍历一个文件夹中内容的布奏: 首先,使用opendir函数打开目录a,返回指向目录a的DIR结构体c。 接着,我们调用readdir( c)函数读取目录a下所有文件(包括目录),返回指向目录a下所有文件的dirent结构体d。 ...
  • C语言遍历目录文件并排序

    千次阅读 2019-01-02 14:29:31
    有时候需要遍历目录文件,但是默认的函数并不支持指定排序的功能,现在介绍一种排序的遍历目录方式,默认按照文件名的数字进行排序 window版本 string split_pathexe(string szFullPath)//获取文件名 {  char ...
  • #include #include #include #include #include #include #include #include #include /* 文件大小和修改时间 */ static int get_file_size_time(const char *filename) ... /* 判断未打开文件 */
  • C语言遍历windows目录 并对文件进行读写操作
  • C语言遍历文件和目录

    千次阅读 2016-09-20 11:56:32
    #include #include #include #include #include #include #include #define MAX_PATH_LENGTH 512 #define MAX_FILE_EXTENSION 9 ...unsigned long visit_dirs = 0;...unsigned long visit_files = 0;...
  • Linux C语言遍历文件夹

    2016-05-23 21:25:11
    #include #include #include void List(char *path) { printf("路径为[%s]\n", path); struct dirent* ent = NULL; DIR *pDir;... //d_reclen:16表示子目录或以.开头的隐藏文件,24表示普通文本文
  • 1 #include<iostream> 2 #include<string> 3 #include<io.h> 4 using namespace std; 5 6 void filesearch(string path,int layer) 7 { 8 ...
  • 主要用到的函数/function. These should get you started: opendir() readdir() closedir() fopen() fread() fwrite() fclose() See other C IO functions. ...How to read all files in a folder using C ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,563
精华内容 19,025
关键字:

c语言遍历文件内容

c语言 订阅