C语言scanf()函数「建议收藏」

C语言scanf()函数「建议收藏」scanf()函数基础扩充

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

scanf()函数基础扩充:

 

  C函数库包含了多个输入函数,其中最常用的差不多就是scanf()了,它可以读取各种格式的输入。

  scanf()可以把输入的字符串转换成我们想要的各种形式,整数、浮点数、字符串等等,它是printf()的逆过程。和printf()一样都有控制字符串和参数列表,不同的是scanf()的参数列表是指向变量的指针

#include <stdio.h>


int main()
{
    int age;
    float height;
    char address[30];
    
    printf("enter your age\n");
    scanf("%d",&age);
    printf("enter your height\n");
    scanf("%f",&height);
    printf("enter your address\n");
    scanf("%s",address);
    
    printf("age : %d height: %f  address: %s\n",age,height,address);
}

  上述程序用scanf()完成了一个简单的提示输入交互功能。

  

    int age;
    float height;
    char address[30];
    
    scanf("%d",&age);
    scanf("%f",&height);
    scanf("%s",address);

   可以看到第三个scanf的参数和第一二个的参数长得不太一样,第一二个用了取地址符&,第三个没有。然而它们都是指向相应变量的指针,对于指向int、float型的指针,用变量名取地址,也就是上面的&age 和 &height;对于数组,数组名便是指向它的指针,如上面的 address。

   scanf()要求传递的是变量的指针,因为我们的输入要存储到这些变量中,也就是要在函数中改变这些变量的值,传递指针才能修改参数变量的值,这里感觉有点像用一个函数交换两个数的值参数要传指针那样的情况。如果传递的不是指向对应变量的指针,那么程序很可能崩溃。

 

  从scanf()的角度看输入:

   假定我们使用了一个%d说明符来读取一个整数。

   scanf()开始每次读取一个输入字符,且跳过空白字符(空格、tab、换行符)直到遇到第一个非空白字符,它试图读取一个整数,所以如果遇到输入字符为一个数字或者一个符号(+和-)则把该字符保存并继续下一个字符的读取,直到它遇到一个非数字的字符,就可以得出结论已经读到了整数的尾部,这时scanf()把这个非数字的字符放回输入。这意味着当程序进行下一次开始读取输入时,它将从前面被放回输入的那个非数字字符开始

   最后scanf()计算读取到的输入的相应数值,并将该值存放到相应变量中。

  

 scanf()的返回值:

    scanf()函数返回成功读入的项目的个数,如果没有读取任何项目(当期望读取到数字,而输入的是飞数字字符)则返回0。当检测到文件末尾时,会返回EOF(end of file),EOF是在文件

stdio.h中定义的特殊值,一般 #define为-1。

    scanf()的返回值可以有如下程序等应用:

  

    //输入为数字则进行处理,否则退出循环
    while(1==scanf("%d",&num))          
    { 
        //do something...
    }   
    
    //跳过输入的整数
    while(1==scanf("%d",&num))          
           ;

 

 

 

参考:C primer plus

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168112.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月3日 下午10:00
下一篇 2022年8月3日 下午10:16


相关推荐

  • Java路径拼接

    Java路径拼接介绍 Java 中文件夹路径拼接的方式 第一种采用 File separator 第二种采用 newFile parent child 第一种方式 参考文章 JAVA 路径拼接 File separator 代码先锋网使用方法如下 Springpath image File separator small jpg 第二种方式 参考文章 java 中路径字符串的拼接 smallfishoil 的博客 CSDN 博客 java 路径拼接使用 java

    2025年11月30日
    7
  • 测试用例的设计方法(全)「建议收藏」

    测试用例的设计方法(全)「建议收藏」测试用例的设计方法(全)等价类划分方法:一.方法简介1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。   2.划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类

    2022年10月12日
    4
  • pytest重试_连接重连失败是什么意思

    pytest重试_连接重连失败是什么意思安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

    2022年7月28日
    7
  • webpack配置typescript详解

    webpack配置typescript详解随着现在 typescript 使用越来越多 作为打包工具界的 webpack 怎么编译 typescript 呢 下面我把自己的实践记录一下 成功编译了 typescript 文件 并且引入 typescript 模块后 也可以成功编译 我们从新建 webpack 项目开始 在此之前先贴一下环境 经常环境不同会造成不同的状况 这边先贴上的环境 node vv14 15 4 npm v6 14 10 webpack vwebpack 5 58 2webpack cli 4 9 0we

    2026年3月19日
    2
  • find-skills 技能安装与使用

    find-skills 技能安装与使用

    2026年3月14日
    1
  • mybatiscodehelperpro激活成功教程2.8.4_idea 激活成功教程

    mybatiscodehelperpro激活成功教程2.8.4_idea 激活成功教程https://zhile.io/2019/04/23/mybatis-code-helper-pro-crack.html

    2026年2月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号