检查输入是否为数字

标签 c validation input numbers

我有一些代码应该从输入中获取数字直到 EOF 并将它们放入数组中。

#include <stdio.h>

int main(){
  int numbers[250000],i,m=0;
  while(scanf("%d",&i)!=EOF){
    numbers[m]=i;
    m++;
  }
}

我的问题是我需要检查输入是否有效(如果是数字)。如果它不是一个数字,我需要打印一条消息,上面写着“错误输入”并结束程序。

有人可以帮我吗?

<小时/> PS。我知道这个问题已经被问过好几次了,我已经用谷歌搜索过,但我无法从答案中找出如何使代码适应我的情况。所以,如果这个问题看起来多余,很抱歉。

最佳答案

scanf 的返回值是一个整数,告诉您成功读取了多少项。如果成功读取单个整数,scanf 将返回 1。

#include <stdio.h>

int main(){
  int numbers[250000],i,m=0;
  int itemsRead = 0;
  while(itemsRead = scanf("%d",&i) != EOF){
     if (itemsRead != 1)
     {
        printf("Wrong input");
        return 0;
     } 
     numbers[m]=i;
     m++;
  }
}

关于检查输入是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47528381/

相关文章:

python - gobject io监控+非阻塞读取

c - 如何在 C 控制台窗口中制作图形矩形?

c++ - 内存管理C

c - HTTP层如何识别设备类型

jquery - 验证与产品相关的每个下拉列表(选择列表)

html - 是否可以使用没有标签的纯 css 单选按钮输入进行自定义?

html - PostsController 中的 NoMethodError#create "creating nested form multi tables"

c++ - 可变参数宏的 2 种不同语法

forms - Yii2:如何为 activeform 使用自定义验证功能?

ruby-on-rails - Rails 验证正则表达式不工作 : invalid though input correct