gpt4 book ai didi

c - 在 C 中制作 shell 时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:49 24 4
gpt4 key购买 nike

所以我正在尝试用 c 编写一个 shell 脚本。它必须执行以下操作:*退出用户输入;辞职*处理一个最多有一个参数的命令

作为内部流程和流程控制的初学者,我遇到了麻烦,可以在正确的方向上使用一点。由于某种原因,无论输入什么,它都只能打印无法执行。这就是我现在所拥有的,我错过了什么吗?还是我做错了什么?

    int main(){
int total_args;
char *arg[3];
pid_t cpid;
char shell_prompt[] = "console:";
char line[MAX_LINE];
char command[MAX_LINE];
char argument[MAX_LINE];

while(!0){
printf("%s", shell_prompt);
fgets(line, MAX_LINE, stdin);
total_args = sscanf(line, "%s %s", command, command_argument);
arg[0] = (char *) malloc(strlen(command));
.....

}

最佳答案

当您为要复制的字符串分配存储空间时,您需要为 '\0' 终止符添加一个额外的字符,因此:

           arg[1] = (char *) malloc(strlen(command_argument));

需要:

           arg[1] = malloc(strlen(command_argument) + 1);

否则对 strcpy 的后续调用将超出分配的存储范围进行写入。

另请注意,我已经删除了 redundant and potentially dangerous cast on the result of of malloc .

关于c - 在 C 中制作 shell 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27099633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com