だから私はシェルを構築しており、実装しているコマンドの1つはプロンプトです。これは引数を取り、それをプロンプトとして設定しますが、引数が入力されていない場合は、ユーザー入力を求めてからそれを使用します.....これは非常にひどい言葉遣いなので、例を次に示します:
[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]: " という char 配列の単なるマクロです。