我正在尝试用Linux编写一个程序,其中要执行的命令是作为命令行参数传递的。我写了一段代码,但它有时运行文件,有时不工作,我不知道问题是什么。
下面是我的代码:
#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);
}发布于 2018-10-21 19:12:13
您的程序具有未定义的行为。
如果用户不传递任何参数,则永远不会进入循环,而您将进入
char com[60];
// ...
system(com);此时com的内容未初始化,因此对system的调用具有未定义的行为。
如果用户传递参数,则执行此操作
strcat(com, argv[i]);此时com的内容未初始化,因此对strcat的调用具有未定义的行为。
要解决此问题,请在循环之前将com设置为有效字符串:
char com[60];
com[0] = '\0';https://stackoverflow.com/questions/52914641
复制相似问题