首页 > 解决方案 > 确保输入是一个字符

问题描述

这可能是一个菜鸟问题,但我需要确保用户给出的输入是数据类型 char [%c] 或字符串 [%s]。

如果它是一个整数,我会做这样的事情:

    int data, x;
    do {
      printf("Please enter a number: ");
      x = scanf(" %d", &data);
      getchar();
    } while(x!=1);

所以我想知道是否有类似的方法可以做到这一点,如果输入应该是字符串或字符。谢谢,任何帮助将不胜感激!

标签: cinput

解决方案


避免使用%cin因为会输入scanf()一些意想不到的字符。\r\n

您可以使用 achar[2]接收单个字符。将在您的字符串后面填充一个\0以表示字符串的结尾,因此数组的长度必须大于 1。

一个例子:

#include <stdio.h>

int main()
{
    char data[2];

    scanf("%1s", data);

    if (data[0] >= 'a' && data[0] <= 'z') // custom your constraint here
    {
        // legal
        printf("legal: %s", data);
    }
    else
    {
        // illegal
        printf("illegal: %s", data);
    }

    return 0;
}

当我输入b时,data将是"b\0"


推荐阅读