首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中使用带命令行参数的system()

在C++中使用带命令行参数的system()
EN

Stack Overflow用户
提问于 2018-10-21 19:05:55
回答 2查看 158关注 0票数 1

我正在尝试用Linux编写一个程序,其中要执行的命令是作为命令行参数传递的。我写了一段代码,但它有时运行文件,有时不工作,我不知道问题是什么。

下面是我的代码:

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
#include<unistd.h>

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

    char com[60];
    int i;

    for(i = 1 ; i < argc ; i++){

        strcat(com, argv[i]);
        strcat(com, " ");
    }

    system(com);
}
EN

Stack Overflow用户

发布于 2018-10-21 19:12:13

您的程序具有未定义的行为。

如果用户不传递任何参数,则永远不会进入循环,而您将进入

代码语言:javascript
复制
char com[60];
// ...
system(com);

此时com的内容未初始化,因此对system的调用具有未定义的行为。

如果用户传递参数,则执行此操作

代码语言:javascript
复制
strcat(com, argv[i]);

此时com的内容未初始化,因此对strcat的调用具有未定义的行为。

要解决此问题,请在循环之前将com设置为有效字符串:

代码语言:javascript
复制
char com[60];
com[0] = '\0';
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52914641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档