【问题标题】:How can I determine if scanf read what was specified in format?如何确定 scanf 是否读取格式中指定的内容?
【发布时间】:2011-11-18 17:05:40
【问题描述】:

我有一个程序定义了一个变量int data

程序使用scanf("%d",&data)从标准输入读取数据。 如果来自标准输入的数据不是整数,我必须打印错误信息。

我试过if(scanf("%d",&data) ==EOF){ printf("error");return 1;}

它对我不起作用。那么,如何判断 scanf 是失败还是成功呢?

【问题讨论】:

    标签: c integer scanf


    【解决方案1】:

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

    例如

    int items_read = scanf("%d", &data);
    
    if (items_read != 1) {
        //It was not a proper integer
    }
    

    关于读取整数here, on Stack Overflow有一个很好的讨论。

    【讨论】:

      【解决方案2】:

      scanf 返回成功读取的项目数。您可以通过检查 1 来检查它是否失败,因为您正在阅读一项:

      if (scanf("%d", &data) != 1)
          // error
      

      【讨论】:

        猜你喜欢
        • 2015-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-23
        相关资源
        最近更新 更多