在特定条件下迭代文件夹的文件

巴吉

使用该解决方案dirent.h,我想遍历在当前文件夹中的特定文件(那些有.wav延伸3个数字开头)用下面的代码:

(重要说明:当我使用MSVC ++ 2010时,似乎无法使用#include <regex>,并且由于没有C ++ 11支持而无法使用

DIR *dir;
struct dirent *ent;
if ((dir = opendir (".")) != NULL) {
  while ((ent = readdir (dir)) != NULL) {
    printf ("%s\n", ent->d_name);
    //if substr(ent->d_name, 0, 3) ... // what to do here to 
                                      //  check if those 3 first char are digits?
    // int i = susbtr(ent->d_name, 0, 3).strtoi();        //  error here! how to parse 
                                                         // the 3 first char (digits) as int? 

    // if susbtr(ent->d_name, strlen(ent->d_name)-3) != "wav" // ...

  }
  closedir (dir);
} else {
  perror ("");
  return EXIT_FAILURE;
}

如何使用不完全支持C + 11的MSVC ++ 2010执行这些测试?

伊哈罗布·阿西米(Iharob Al Asimi)

好,这是一个解决方案

#include <stdio.h>
#include <string.h>

int
main(void)
{
    const char *strings[] = {"123.wav", "1234 not-good.wav", "456.wav", "789.wav", "12 fail.wav"};
    int         i;
    int         number;

    for (i = 0 ; i < sizeof(strings) / sizeof(*strings) ; ++i)
    {
        size_t      length;
        int         count;
        const char *pointer;

        if ((sscanf(strings[i], "%d%n", &number, &count) != 1) || (count != 3))
            continue;
        length = strlen(strings[i]);
        if (length < 4)
            continue;
        pointer = strings[i] + length - 4;
        if (strncasecmp(pointer, ".wav", 4) != 0)
            continue;
        printf("%s matches and number is %d\n", strings[i], number);
    }
    return 0;
}

如您所见,scanf()检查字符串的开头是否有整数,也跳过所有可能的空格字符,然后捕获被扫描的字符数,如果相等,3则继续检查扩展名。

如果您使用的是Windows,请替换strncasecmp()_strnicmp()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在特定条件下从文件中提取行

来自分类Dev

在特定条件下使用字符串 python 导入文件

来自分类Dev

遍历文件夹,使用VBA重命名满足特定条件的文件?

来自分类Dev

在特定条件下选择列

来自分类Dev

在特定条件下播放winsound

来自分类Dev

在特定条件下创建组

来自分类Dev

读取文件中的struct数组,并在特定条件下读取printf特定行[C语言]

来自分类Dev

在Python中的特定条件下更改for循环的迭代器的值

来自分类Dev

SAS:无法在特定条件下使用where或if条件。

来自分类Dev

在特定条件下获取数据集的特定值

来自分类常见问题

获取特定条件下的数据透视值

来自分类Dev

linq在特定条件下获得多个值

来自分类Dev

Python在特定条件下停止嗅探

来自分类Dev

在特定条件下实现比较器

来自分类Dev

IPTables-在特定条件下阻止端口

来自分类Dev

如何在特定条件下扩展课程?

来自分类Dev

在特定条件下如何执行Java程序

来自分类Dev

在特定条件下从JSON中选择

来自分类Dev

在特定条件下如何称呼瀑布?

来自分类Dev

PANDAS中特定条件下的累计计数

来自分类Dev

熊猫在特定条件下的年度汇总

来自分类Dev

在特定条件下计算数组中的值

来自分类Dev

Laravel队列-在特定条件下防止作业重试

来自分类Dev

SQL:在特定条件下的不同记录

来自分类Dev

计算特定条件下的出现次数

来自分类Dev

获取特定条件下的数据透视值

来自分类Dev

在特定条件下查找ArrayList中的值

来自分类Dev

仅在特定条件下显示方法

来自分类Dev

返回0是特定条件下的计数为NULL