我想制作一个只接受用户小写字符的程序。 并且我希望它在输入中有空格,大写字母或字母表旁边的任何字符时打印错误。
但我的代码表现得出乎意料,我不知道为什么。
仅当空格或大写字母是输入中输入的第一个字符时,才会打印错误消息。即使我用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");
}
答案 0 :(得分:0)
你没有扫描整个字符串。你将第一个字符输入ch,然后你将其余部分变为buff(或多或少),然后如果ch是一个小写字符,你的程序将打印“没有空格”因为你永远不会改变ch。