所以我正在构建一个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”只是一个char arrray的宏,是“[MY_SHELL]:”。
答案 0 :(得分:0)
问题在于这句话:
scanf("%s", &target);
您需要将指针传递给输入字符串的缓冲区,而不是指向char *
的指针。替换为:
target = (char *)malloc(1000);
scanf("%s", target);
当然,这不是安全代码,因为用户的输入可能超过1000个字符。但是让我们先了解基础知识。