【Tips】C代码如何要求user严格输入指定数据类型

之前忘了怎么写这个了,网上搜到的方法乱七八糟,运行还有问题。
这篇文章里我用 只输入数字只输入一个字母 举例,其他需求之后会更新。

1.只允许输入数字

主要是靠设定一个int类型值来读取scanf_s返回的值
判断输入的值的类型是否是我们设定的。比如

int valid = 0;
int x = 0;
valid = scanf_s("%d", &x);

如果输入的不是int类型值,则valid值为0,反之则为1。

附上我使用的代码:

#include <stdio.h>  
#include <stdlib.h> 

int main() {
    int valid = 0; //valid用于验证输入
    int x = 0;
    
    while (1) {
        printf("请输入数字(需要大于1且小于30): ");
        valid = scanf_s("%d", &x);

        // 检查输入的内容是否符合要求 
        if (valid == 1 && x > 1 && x < 30) {
        break; // 输入有效,退出循环
        }
        else {
        printf("请重新输入符合规范的数字。\n\n");
        
        //清除输入缓冲区,丢弃无效输入
        while (getchar() != '\n');   
        }
    }

    return 0;
}

运行结果:
在这里插入图片描述可见它不允许int类以外的值和规定范围外的数字被输入到后续程序。

2.只允许输入一个字母

主要是靠调用isalpha函数来判断读取的第一个字符是不是字母,第二个字符是不是回车,且不能第一个字符就直接回车。
判断输入的值的类型是否是我们设定的。比如

char input[100]; // 存储用户输入的字符串  
fgets(input, sizeof(input), stdin); // 读取整行输入  

if (isalpha(input[0]) && input[1] == '\n') { //判断条件,确保只输入了一个字母+回车

如果输入的不是int类型值,则valid值为0,反之则为1。

附上我使用的代码:

#include <stdio.h>  
#include <ctype.h>  

int main() {
    char input[100]; // 存储用户输入的字符串  

    while (1) {
        printf("请输入一个字母: ");
        fgets(input, sizeof(input), stdin); // 读取整行输入  

        // 检查输入是否只包含一个字母  
        if (isalpha(input[0]) && input[1] == '\n') {
            printf("您输入的字母是: %c\n", input[0]);
            break;
        }
        else {
            printf("无效输入,请确保只输入一个字母。\n\n");
        }
    }
    return 0;
}

运行结果:
在这里插入图片描述
输入多个字母的方法同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值