【问题标题】:find all exec programs查找所有执行程序
【发布时间】:2014-02-27 04:47:15
【问题描述】:

我必须模拟存储在 CD/DVD 上的数据。

我有 3 个课程:

  1. CD 包含一些关于电影的内容
  2. CD 包含一些关于音乐的内容
  3. CD 包含一些关于游戏的内容

对于每种类型的 CD/DVD,我必须显示计算机上安装的应用程序, 允许访问它(不同玩家的音乐/电影,或各种单人游戏)。

我怎样才能找到所有的 exe 程序? 我使用下一个函数(但它只在指定文件夹中找到)。

#include<stdio.h>
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<fstream>
#include<dirent.h>

void listFile();

int main()
{
    listFile();
    return 0;
}
void listFile(){

    int l=0;
    DIR *pDIR;
    struct dirent *entry;
    if( pDIR=opendir("C:\\Users\\A\\Desktop") ){
        while(entry = readdir(pDIR)){
            if( strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
            {
                l=strlen(entry->d_name);
                if(entry->d_name[l-1]=='e')
                    if(entry->d_name[l-2]=='x')
                        if(entry->d_name[l-3]=='e')
                            if(entry->d_name[l-4]=='.')
                            {
                                string x;
                                x=entry->d_name;
                                cout<<x<<endl;
                            }
            }
        }
        closedir(pDIR);
    }
}

【问题讨论】:

  • 我怀疑c++ 是否适合执行此操作。但是如果你坚持,你最好还是使用 s.th。比如 boost 文件系统库。
  • 这是我的学校项目。所以……一定是一种方式。
  • 你需要检查entry 然后,如果它包含另一个目录,然后递归地下降到那里(实现后者的提示,将目录路径作为参数传递给你的listFile() 函数)。我会把剩下的留给你来解决你的家庭作业。

标签: c++ exec


【解决方案1】:

您必须使用您的操作系统 API,因为标准 C++ 库没有列出目录或文件夹及其内容的规定。

您的基本算法是对每个文件夹执行“for each”:

  1. 对于目录中的每个文件夹,调用搜索功能基于 文件夹(递归)。
  2. 对于每个文件,获取文件名,并检查“.exe” 扩展名。

我无法告诉您使用哪个 API,因为您没有在问题中指定平台、操作系统和编译器(请使用信息编辑您的问题)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2018-11-02
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多