【发布时间】:2021-02-27 05:56:45
【问题描述】:
我目前正在尝试编写一个程序来接受用户输入并在 unix 系统中执行命令,代码可以编译,但是当我运行它时出现分段错误。我认为这可能与 system() 函数的输入数据类型有关,但我似乎无法弄清楚
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
char argument[1024];
main() {
fgets(argument, 1024, stdin);
strtok (argument, "\n");
char *command = strcat("cd ", argument);
int response = system(command);
if(response == -1)
{
printf("error executing command");
}
}
如果这看起来微不足道,我深表歉意,我对 c 没有太多经验
【问题讨论】:
-
您正在尝试连接到字符串文字。更好的方法可能是使用
sprintf来构建您的命令字符串。 -
man strcat:strcat(dest, src)。第一个参数是一个目的地,它应该足够大。您将字符串文字传递给函数。该文字的长度是4字节,因此它是溢出的。 -
这样吗? sprintf(命令,“cd %s”,参数);