gpt4 book ai didi

c - 获取用户输入时出现段错误?

转载 作者:行者123 更新时间:2023-11-30 17:46:34 25 4
gpt4 key购买 nike

所以我正在构建一个 shell,我正在执行的一个命令是提示符。这将接受一个参数并将其设置为提示,但如果没有输入参数,它将要求用户输入,然后使用它......措辞非常糟糕,所以这里是一个例子:

[SHELL] prompt code
code[SHELL] ls
code[SHELL] ....

[SHELL] prompt
please enter a prefix: (user input goes here, say code again)
code[SHELL]

现在第一种情况工作正常,但是当我尝试不带参数的提示时,它会要求用户输入,但是当我输入它时,它会出现段错误,我不确定为什么。

这是我到目前为止的代码:

void prompt(char *target)
{
if(!target)
{
printf("Please enter a prefix: ");
scanf("%s", &target);
}
char *result = malloc(strlen(SHELL) + strlen(target) + 1);
strcpy(result, target);
strcat(result, SHELL);
SHELL = result;
}

有什么想法吗?也许这只是我的一个简单错误,但看起来这应该可行。

顺便说一句,在我的代码中,“SHELL”只是一个字符数组的宏,即“[MY_SHELL]:”。

最佳答案

问题出在这个声明上:

scanf("%s", &target);

您需要传递一个指向输入字符串缓冲区的指针,而不是指向 char * 的指针。将其替换为以下内容:

target = (char *)malloc(1000);
scanf("%s", target);

当然,这不是安全代码,因为用户的输入可能超过 1000 个字符。但让我们先了解一下基础知识。

关于c - 获取用户输入时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212305/

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