C语言scanf()与缓冲区

这篇博客探讨了C语言中scanf函数的返回值及其与缓冲区的关系。当用户输入不匹配时,scanf可能返回正整数(表示正确输入的参数个数)、0(表示输入不匹配)或EOF(输入流结束)。缓冲区作为内存中的一段空间,用于缓存输入输出数据,分为全缓冲、行缓冲和无缓冲三种类型。在不同系统中,stdin和stdout的缓冲特性可能不同,但通常stdin和stdout是行缓冲,stderr无缓冲。缓冲区大小默认为512字节,可以通过setvbuf和setbuf函数调整。此外,介绍了如何处理scanf后的回车字符以及如何根据数据类型选择合适的输入方法。
摘要由CSDN通过智能技术生成

scanf函数返回值

  1. 正整数,表示正确输入参数的个数。例如执行 scanf(“%d %d”, &a, &b);
    如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量);
    如果用户输入”3,4”,可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
  2. 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入”,3 4”,返回0。
  3. EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。

关于缓冲区问题

  • 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。

    缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

    是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
    缓冲区的类型

    缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。

    1. 全缓冲 在这种情况下,当填满标准I/O

  • 14
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值