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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python3 实例–Python 计算圆的面积

    Python3 实例–Python 计算圆的面积#代码如下:#Python3实例–Python计算圆的面积print(“Python3实例–Python计算圆的面积”)#公式中r为圆的半径。r=float(input())PI=3.14s=PI*(r**2)print(“圆的面积为:{}”.format(s))#运行结果如下:Python3实例–Python计算圆的面积3圆的面积为:…

  • 【14】进大厂必须掌握的面试题-持续监控面试

    Q1。为什么需要连续监控? 我建议您遵循以下流程: 连续监视可以及时发现问题或弱点,并采取快速纠正措施来帮助减少组织的费用。持续监控提供的解决方案可解决以下三个运营准则: 持续审核…

    2020年10月23日
  • Kubernetes各版本对应支持的docker版本列表

    Kubernetes各版本对应支持的docker版本列表Kubernetes主要做Docker的容器化管理,总结一下如何查看k8s对应支持的docker版本的方法。在GitHub可以查看所有Kubernetets版本信息:https://github.com/kubernetes/kubernetes/releases截止2019.08.09最新的版本支持信息:Kubernetes1.15.2–>Docker版本1.13…

    2022年10月30日
  • Unity3D中Isometric Tilemap功能实践「建议收藏」

    Unity3D中Isometric Tilemap功能实践「建议收藏」前言最近出于兴趣想自己做一个2D的游戏,因为有着C的基础,所以决定使用Unity3D来做。之前对于Unity3D其实了解不多,不过看了一些Unity3D的视频和官方文档后,暂时做起来也没遇到什么

  • pytest 执行用例_测试用例执行结果有哪些

    pytest 执行用例_测试用例执行结果有哪些前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • Python之requests的安装

    在windows系统下,只需要输入命令pipinstallrequests,即可安装。   在linux系统下,只需要输入命令sudo  pipinstallrequests,即可安装。   注:关于python第三方库的安装最好少使用easy_install,因为easy_install只能安装不能卸载,如果要卸载需要进入到python的安装

发表回复

您的电子邮箱地址不会被公开。

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