C语言scanf()函数的返回值是什么?

一、问题

        scanf()函数是⽤于数据输⼊的,输⼊变量的值被改变,那么 scanf()函数本⾝是否有返回值?返回值有什么意义呢?

二、解答

        scanf()函数的返回值很少有⼈⽤到,它是⼀个整数,⽤于表⽰成功输⼊数据的个数。来看下⾯的例⼦。

#include <stdio.h>

int main()
{
    int i, j, k;
    printf("请输入三个整数:\n");
    scanf("%d%d%d", &i, &j, &k);
    printf("i=%d,j=%d,k=%d\n", i, j, k);
    return 0;
}

输出结果如下

请输入三个整数:
1 2.5 3
i=1,j=2,k=12041948

        程序中,由于对整数 i 试图输⼊2.5 ⽽导致错误。实际上,i只能得 2,“.5”后的所有数据输⼊出错,不能正确赋值,因此。得不到正确结果。如果程序在这个基础上继续运⾏,会导致后⾯的错误越叠加越多。怎样由程序本身检查出这种错误呢?这时就可以⽤scanf()函数的返回值来实现。

        修改⼀下程序,取出 scanf()函数返回值。如果它的值是3,那么表示所有数据均⼰正确输⼊;如果⼩于 3,必定出现错误输⼊。

#include <stdio.h>

int main()
{
    int i, j, k, n = 0;
    printf("请输入三个整数:\n");

    // 读取三个整数,直到成功读取三个值或输入格式错误
    while (n != 3)
    {
        n = scanf("%d %d %d", &i, &j, &k);
        if (n < 3)
        {
            printf("格式输入错误,请重新输入。\n");
            // 清空输入缓冲区,以便用户可以重新输入
            while (getchar() != '\n')
                ;
        }
    }
    printf("i=%d, j=%d, k=%d\n", i, j, k);
    return 0;
}

输出结果如下

请输入三个整数:
1 2.5 3
格式输入错误,请重新输入。
1 2 3
i=1, j=2, k=3

三、总结

        输⼊数据格式错误问题,很多初学者都会忽略,认为输⼊时总是没错的。通过 scanf() 函数的返回值,可以很好地解决这⼀问题。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-10 15:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-10 15:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-10 15:12:01       82 阅读
  4. Python语言-面向对象

    2024-02-10 15:12:01       91 阅读

热门阅读

  1. 【无标题】

    2024-02-10 15:12:01       49 阅读
  2. Python Pickle库原理及使用详解

    2024-02-10 15:12:01       47 阅读
  3. 【C语言】数组

    2024-02-10 15:12:01       45 阅读
  4. Day44 198打家劫舍 213打家劫舍II 337打家劫舍III

    2024-02-10 15:12:01       51 阅读
  5. 刘润--进化的力量--流量新生态

    2024-02-10 15:12:01       48 阅读
  6. 边缘计算中的能源效率与运维成本

    2024-02-10 15:12:01       52 阅读
  7. Python Numpy入门学习:基础与进阶

    2024-02-10 15:12:01       45 阅读
  8. 018 Linux

    018 Linux

    2024-02-10 15:12:01      44 阅读
  9. Python学习之路-初识爬虫:基础知识

    2024-02-10 15:12:01       47 阅读