我想製作一個只接受來自用戶的小寫字符的程序。 而且我希望它在打印錯誤時,只要有空格,輸入中的大寫字母或字母旁邊的任何字符。 但我的代碼表現出意想不到的方式,我不知道爲什麼。 僅當輸入中輸入的第一個字符是空格或大寫字母時,纔會打印錯誤消息。即使我正在用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'返回'int',而不是'char'](http:// stackoverflow .com/q/8464030/995714),因爲EOF和字符代碼0xFF不同 –
「我想製作一個程序,只接受來自用戶的小寫字符。」和「每當有空白時打印一個錯誤......」 - >>所以你想要「接受」小寫字母和空格等,只需要對它們做不同的事情? – chux
@chux我不想接受空格,我想檢測它們並在輸入時打印錯誤 – SpeedGoat