c ++:如何运行以字符串和文件名作为参数的程序?

时间:2016-11-14 22:15:55

标签: c++ macos terminal

我要运行程序示例sample-code.cpp。它采用类似-create的字符串,2个文件名:一个作为输入input.txt,一个作为输出文件名output.idx作为参数和一个整数10

我应该可以使用以下命令从命令行(mac Terminal / UNIX)运行它:

$sample-code -create input.txt output.txt 10

这是main()代码的片段:

int main(int argc, char* argv[])
{

    // Creating New File
    if (strcmp(argv[1],"-create") == 0)
    {
        KeyFieldMax = atoi(argv[2]);
        InputFileName = argv[3];
        IndexFileName = argv[4];

当我输入此命令$sample-code -create input.txt output.txt 10时,我收到此错误:

-bash: sample-code: command not found

1 个答案:

答案 0 :(得分:1)

bash: sample-code: command not found告诉您样本代码不在bash的命令路径中。如果您在构建程序的目录中,请键入./sample-code以运行它。

您的错误Segmentation fault: 11是一个超出范围的数组。在调用它们在数组中的位置之前,您需要对参数进行完整性检查以验证它们实际存在:

if (argc < 4)
{
    fprintf(stderr, "Urk! Not enough arguments!");
    return 1;
}
else
{
    KeyFieldMax = atoi(argv[2]);
    InputFileName = argv[3];
    IndexFileName = argv[4];
    ...