ユーザーから小文字しか受け付けないプログラムを作成したい。 そして、空白、大文字の文字、またはアルファベットの横の文字があるときは常にエラーを表示したい。 しかし、私のコードは予期しない動作をしています。 エラーメッセージは、入力に入力された最初の文字が空白または大文字だった場合にのみ表示されます。空白を探しているfgetcで文字列全体をスキャンしていてもどうすれば可能ですか?入力の空白を検出する
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main (void)
{
char buff[BUFSIZ];
char ch = fgetc(stdin);
if (fgets(buff, sizeof buff, stdin) != NULL && islower(ch)) {
while (ch != ' ' && ch != EOF)
{
printf("There are No Spaces in the input!\n");
return 0;
}
}
printf("Error\n");
}
あなたは文字列全体をスキャンしていない事前
[空白の有無を確認する] '' isspace' '(http://stackoverflow.com/q/15326729/995714)、 '' fgets'は 'char'ではなく' int'を返します。(http:// stackoverflow .com/q/8464030/995714)、EOFと文字コード0xFFが異なるため –
"ユーザーから小文字しか受け付けないプログラムを作成したい" "空白があるときはいつでもエラーを出力します" - >だから、小文字とホワイトスペースの両方を "受け入れる"ことを望みます。 – chux
@chux空白を受け入れたくないので、それらを検出して、入力時にエラーを出力したい – SpeedGoat