c - 我应该怎么做,如果用户输入我不想要的东西,它会在 C 中触发一条消息?

标签 c

我是 C 编程的新手,我目前有这个简单的代码,它要求用户输入一个 float ,然后用这个值打印出来,但我想知道如何制作它以便它给出一个如果用户输入任何内容,但不是数字。我知道您需要使用 if 和 else 语句,但不确定参数部分使用什么......

到目前为止我的代码(在我找到如何处理非数字输入之前还没有完成代码):

#include <stdio.h>

int main()
{
    float input;
    printf("Hello please enter a float number!\n";
    scanf( "%f", &input);
}

我知道您需要使用 if 和 else 语句,但我来自 Python 背景,所以语法完全不同......正在寻找有关如何处理此问题的指导!请不要太高级,我正在寻找简单的东西。

编辑:

谢谢大家的精彩回复!它真的帮助我了解更多不同的方式来处理这些问题! :D

最佳答案

虽然 doukremt 是正确的,因为您可以检查 scanf 的返回值以检测此特定错误,但 scanf 实际上只是用于快速而肮脏的解决方案,并且当您想要更稳健的行为时,会有很多失败。

我建议将整行输入读取为字符串(例如,使用 fgets),然后使用 strtof 或一些类似的函数将其转换,它会告诉您在转换失败时使用它的第三个参数。然后您可以明确检查每个可能的错误情况并适本地处理它们。

关于c - 我应该怎么做,如果用户输入我不想要的东西,它会在 C 中触发一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800576/

相关文章:

c - 使用 C + libxml++ 添加 XML 注释

C 函数和结构体的区别

c - 链表,分配字符数组 [C]

使用 Flex 和 Bison 指定前缀时编译错误

ios - 我对 NSUserDefaults 中的 NSMutableArray 结构做错了什么? "attempt to insert non-property list object"

c - 评论中的 "@(#)"是什么意思?

c++ - C、编译错误和指针

C:元素个数奇数的数组归并排序

c - Linux 内核模块 - 生成两个具有共享本地 header 的模块

c - MinGW dlltool 创建空文件