stdin
上の文字と自分の仕様の文字を比較できるようにしたいと思います。これの目的は、コマンドとして指定された単一の文字のみを維持しながら、他のすべての入力を間違っているものとして除外することです。「nn」や「qddaw」のように->間違ってもう一度行きますが、「n」は何か便利なものになります。stdin
これが私が「コード的に」心に留めていることです:
if (input does not contain 'c' or 's' or 'q' or 'n') {
printf("some kind of error");
}
さて、私は次のような指定された文字で配列を作成しようとしたarray[] = {'a', 'b', 'c'}
ので、関数strncmpを使用してstdinの文字列と比較することができました。
char c[256];
scanf("%s", c)
if (strncmp(array, c, 1) != 0) printf("error");
しかし、それは機能していないようです。助言がありますか?
編集1:これが実際のコードです:
char c[256];
char* s = "nsrld";
char* quiter = "q";
do
{
printf(">");
scanf("%s", c);
if (only when there is no 'n' or 's' or other char from char* s on input)
{
errorHandle(ERROR_WRONG_CMD);
}
scanf("%*[^\n]"); scanf("%*c");
} while (strcmp(c,quiter) != 0);
ご覧のとおり、私は「q」をうまく処理しましたが、複数の文字はお尻の痛みです。アドバイスありがとうございます。
編集2:つまり、入力を指定された文字のセットと比較し、1つまたは別の文字が存在する場合にのみ関数が渡される関数が必要です(ただし、文字が一緒にある場合は通過しません)。 'qs'のように)