我想制作一个只接受来自用户的小写字符的程序。 而且我希望它在打印错误时,只要有空格,输入中的大写字母或字母旁边的任何字符。 但我的代码表现出意想不到的方式,我不知道为什么。 仅当输入中输入的第一个字符是空格或大写字母时,才会打印错误消息。即使我正在用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