文字列を保持する文字列 "prompt"があります。ユーザーは収集した文字列(トークン)をchar
の配列に区切って(区切り文字として空白を使用して)入力したプロンプトを変更できる必要があります。Cでは、文字列の配列の要素を別の文字列にコピーできません
たとえば、仮定:
char **tokens[2] = {"setprompt", "newprompt"};
char *prompt = "oldprompt";
if(strcmp(tokens[0], "setprompt") == 0)
{
strcpy(prompt, tokens[1]);
}
strcmp()
機能が完全に正常に動作し、それはstrcpy()
に到達したときただし、tokens[1]
の要素は、(文字列"newprompt"
である)文字列プロンプトにコピーされません。これは私の問題です。
代わりにstrncpy()
を使用することに加えて、トラブルシューティングを試みましたが、各変数/ポインタの宣言のどこかに問題があると思います。どんな援助やアイデアも素晴らしいだろう。
注:実際のプログラムでは、トークン配列のサイズは2ではありません。この例は簡単にするために変更されています。ありがとう!
コンパイラの警告を有効にします。 'char ** tokens [2] = {" setprompt "、" newprompt "};' - > "警告:互換性のないポインタ型からの初期化"。 – chux
'char **トークン[2] = ...' - > 'char *トークン[2] = ...' '*'が多すぎます。 [@Michael Dorgan](https://stackoverflow.com/a/47297880/2410359)は、別の問題を抱えています。 – chux