如何制作一个 C++ 程序并将使用该目录中的命令行输入和 ls?

rajin100000

我的系统是 Ubuntu 20.04。假设我在project目录中,该目录包含以下文件夹/文件:test, hello.txt. 我编写了以下程序:-

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[]){
    const char* command = "ls" + argv[1];
    system(command);
    return 0;
}

然后我将test在运行它时作为程序的第一个参数。我预计它会打印文件夹中的所有文件和文件test夹。但它给了我一个错误。有人可以告诉我,错误是什么以及如何修复它?

上帝听见

您在代码中所做的事情是不正确的,您添加了两个指针,结果显然不是您所期望的。使用std::string. 所以你的代码看起来像这样:

#include <iostream>
#include <string>
#include <cstdlib>
#include <string>

using namespace std;
int main(int argc, char* argv[])
{
    if(argc < 2)
    { 
        cerr << "missing cli argument\n";
        return -1;
    }
    auto command = std::string("ls ") + std::string(argv[1]);
    system(command.data());
    return 0;
}

通常使用该system功能是一种不好的做法,因此在您的情况下,我宁愿使用执行您的任务的功能:显示文件夹中的所有文件连同您的代码,它将如下所示:

#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;

int main(int argc, char* argv[])
{
    if(argc < 2)
    { 
        std::cerr << "missing cli argument\n";
        return -1;
    }
    std::string path = argv[1];
    for (const auto & entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
    return 0;
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何制作一个可以同时执行另一个C程序的程序?

文件操作。一个C程序,它将使用fork()execvp(),wait / waitpid()接受单个命令行参数

你如何制作一个代码,在 C 中打印 N 和 M 之间的数字

如何使用execvp在c中编写ls命令

如何制作一个查找数字的数字平方值的 C++ 程序

ls -c和ls -t之间的区别

如何制作一个可以处理变量参数和变量类型的C ++函数?

如何制作一个函数来删除C中的双字母?

如何在C ++中制作一个类的多个实例

在C ++中,如何制作一个可以包含相同变体向量的变体?

如何在C中制作一个fifo特殊文件?

如何制作一个链接列表数组,其链接列表指向C中的矩阵行?

如何在C中制作一个计时器?

在C中实现ls命令

在C中创建ls命令

制作指向另一个 C 程序的指针

如何在Java中使用“ ls * .c”命令?

在Eclipse中制作一个C ++项目

在C中制作一个多架构静态库

ls和cat功能的一个命令?

C ++如何在原始抽象类中制作一个函数,该函数接受派生类的输入

如何使用`ls`分组并仅显示目录名称的第一个单词?

编写一个程序,该程序读取所有命令行参数并打印平均值,c ++

如何“静音” ls命令?

如何使用命令行参数的子集调用另一个 C 文件中的函数?

我如何制作一个简单的程序来输出包含两个符号的金字塔:一个使用C ++的循环打印两次,另一个打印两次?

ls与ls -C的区别

我该如何在C#中制作一个倒计时计时器,该计时器占小时,分钟和秒?

WPF,如何制作单个实例并在c#中启动另一个实例时显示MainWindow