c - 强制 scanf ("") 只接收数字 0-7

标签 c scanf

我的任务是编写一个代码,接收 0 到 7 之间的数字(包括边)并将其转换为二进制补码的 4 位二进制代码。

我的代码一切正常。它有效并且计算很好。 但我想通过限制用户输入 0-7 以外的数字来让事情变得更好。 现在用户可以输入他们想要的任何数字,但这在转换系统中没有意义......

我该怎么做?

谢谢...

最佳答案

你可以这样做

#include <stdio.h>

int main(void) 
{
    unsigned int digit;

    while ( scanf( "%u", &digit ) != 1 || 7 < digit )
    {
        scanf( "%*[^\n]" );
    }

    printf( "digit = %u\n", digit );

    return 0;
}

如果输入的是

A
8
5

那么输出是

digit = 5

关于c - 强制 scanf ("") 只接收数字 0-7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767661/

相关文章:

c - strtok() 在 C99 中返回错误值?

c - printf 不产生输入值

c - 是否可以在 C 中使用 sscanf 在 shell 中创建别名命令?

c - simulink 编码器 c 文件到 simulink 模型

c++ - 使用 libpq 组织 PostgreSQL 数据库连接参数?

c - 我正在尝试制作一个非常简单的刽子手程序。 while 循环不工作

c - while 循环在输入错误后一直忽略 scanf

c编程: (scanf and gets)

c - Pro *C 查询 IN 子句中的多个动态值

c 打印太多字符