检测输入中的空白区域

时间:2016-11-20 01:53:13

标签: c input fgets fgetc

我想制作一个只接受用户小写字符的程序。 并且我希望它在输入中有空格,大写字母或字母表旁边的任何字符时打印错误。

但我的代码表现得出乎意料,我不知道为什么。 仅当空格或大写字母是输入中输入的第一个字符时,才会打印错误消息。即使我用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");
}

1 个答案:

答案 0 :(得分:0)

你没有扫描整个字符串。你将第一个字符输入ch,然后你将其余部分变为buff(或多或少),然后如果ch是一个小写字符,你的程序将打印“没有空格”因为你永远不会改变ch。