c - 如何确定c中的无效输入

标签 c input floating-point invalid-characters

我想采用 float 输入,但如果用户输入字符,它将显示无效输入,我在网上没有找到具体的答案。 它是如何完成的?

最佳答案

虽然 scanf 可以安全地解析 double ,但许多编译器已弃用它(有充分的理由),因为它在解析字符串时不安全。此外,如果解析失败,您将在输入缓冲区中留下残留物,并且您必须自己刷新它。

出于这些原因,更喜欢像 fgets 这样的函数,它检查其提供的缓冲区的长度,然后是像 strtodsscanf 这样的函数> 进行转换。

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

int main(void)
{
    char buf[64];

    /* read */
    if (fgets(buf, sizeof buf, stdin)) {
        /* convert */
        char *err;
        double d = strtod(buf, &err);
        if (*err) {
            puts("entry invalid");
        } else {
            printf("you entered %lf", d);
        }
    }

    return 0;
}

关于c - 如何确定c中的无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222667/

相关文章:

java - JTextField:避免在数字中显示 ","

javascript - javascript中的双值

c - 为什么用 float 除以 10 的幂不如直接输入数字准确?

c - 尝试在 c 中返回 char* 时出错

c++ - 如何将字符串(字符数组)中的 UUID 转换为静态 uint8_t adv_data[31]

java - 来自您自己创建的类的输入流?

Linux 输入驱动程序无法正常工作

c - Valgrind 关于 asprintf : address is 0 bytes inside a block of size <size> alloc'd

c - 如何使用 formatstring 打印出字符串?

jquery - 为什么 jQuery val() 函数不更新属性 'value' ?