C语言从入门到精通第7天(scanf、printf、getchar函数的使用)

news2024/12/28 0:55:57

scanf、printf、getchar函数的使用

  • printf函数
  • scanf函数
  • getchar函数

printf函数

在C语言中使用printf函数进行格式化的输出,它是一个可变的参数函数,参数的个数不定。在前面我们已经学习了各个类型的打印格式,这里就对最常见的输出格式进行介绍。

%d:表示对整数进行输出
%c:表示对字符型的进行输出
%p:表示对指针类型进行输出
%s:表示对字符串类型进行输出
%f:表示对浮点型进行输出

具体的我们通过代码进行说明:

int main(){
    int a = 110;
    char b = 'c';
    float c = 5.2;
    int *p = &a;
    // 字符串最后一个为'\0'
    char arr[5] = {'c','b','\0','d'};

    printf("%d\n",a);
    printf("%c\n",b);
    printf("%f\n",c);
    //  打印指针的地址
    printf("%p\n",p);
    printf("%s",&arr);
    return 0;
}

以上字符串和指针类型的数据后面会进行详细的讲解这里就不过多的说明,只需要知道有这一种输出格式即可。

有时候对于浮点型我们希望输出的格式保留小数位,或者输出的语句进行对其,这时候我们就得进行相应的格式变换。例如:

int main(){
    float a = 4.55555;

    // 我们希望浮点数输出10位并保留小数点后3位
    printf("%10.3f",a);

    return 0;
}

它的输出结果为:

在这里插入图片描述

此时我们发现它的前面有空格5个,这是因为我们要求函数输出10位数,小数点也占位数,前面的空格位数加上4.556五位刚好是十位。

当然这种格式化输出还有很多,这里就对它的格式进行说明一下:”%【+或者-数字】【输出长度】.【保留位数】【类型】“。用【】括起来的都是可选的。

+或-数字 表示右对齐和左对齐多少位,如:”%+3d“表示右对齐3位。
输出长度:表示输出位数的长度,不够的加空格,长的删掉。
保留位数:表示保留小数点后几位。
类型:表示输出的数据类型。

scanf函数

scanf函数是C语言当中的输入函数,它的作用是读取我们从键盘上输入字符的地址。然后将以给定的格式进行输入。格式如下:scanf("%d",&a),在键盘上输入一个整数到缓存区,然后scanf从缓存区中获取输入的字符,直至缓存区中为空。

代码如下:

int main(){

    int x;
    scanf("%d",&x);

    char y;
    scanf("%c", &y);

    return 0;
}

getchar函数

用于获取一个可用的字符,并返回。

例如:

int main(){

    char ch;
    ch = getchar();
    printf("%c\n", ch);
}

运行时,会让你输入一个字符,getchar()函数进行获取并进行返回。

下面我们来看一个更高级的用法,当scanf函数与getchar联用时会有什么妙处:

在这里插入图片描述

我们发现只有两个函数进行输出,这是因为scanf是获取缓冲区中的字符,当我们多个scanf联用时就得特别的注意。

注意: 多个scanf函数联用时,如果scanf运行前是除了输入字符型其他的类型,则会将缓冲区中的字符全部清除;如果运行前是字符型的输入,则缓冲区中不会进行清楚,当我们按下回车键时,scanf会自定的捕获这个回车键,从而不会进行下一步的输出了。

如果我们要使这三个scanf函数全部都运行,应该怎么去处理呢?这时我们的getchar函数就该发挥作用,让getchar函数去捕获输入的这个回车字符,从而使他进行下一步的运行。代码如下:

int main(){

    int x;
    scanf("%d",&x);

    char y;
    scanf("%c", &y);

    // 用于捕获空格
    getchar();
    int a, b;
    // 进行多个值的获取,输入格式必须更自己定义的格式一致
    // 输入一个数时加一个空格在输入一个数
    scanf("%d %d", &a, &b);

    return 0;
}

他的输出为:

在这里插入图片描述

这时发现我们的3个scanf函数都可运行了,上面的问题便解决了。这里特别要注意的是:一个scanf在进行多个值的输入时,必须按照自己定义的格式进行输入,并且在格式中不能包括转义字符,如'\n'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在模拟器里面脱360的壳

1.准备环境 1.夜神模拟器 2.pyhton3.8 3.frida的版本 16.0.17 4.frida-dexdump 2.设置adb连接 我们打开夜神模拟器所在的文件夹,里面有自带的adb,我们在这个文件夹里面打开cmd。在里面链接上夜神模拟器。 adb devices 我这边显示链接成功了。 3.…

全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库

DataCap是用于数据转换、集成和可视化的集成软件,支持多种数据源、文件类型、大数据相关数据库、关系数据库、NoSQL数据库等。通过该 DataCap 可以实现对多个数据源的管理,对数据源下的数据进行各种操作转换,制作数据图表,监控数据…

蓝牙耳机哪个牌子的音质好一些?三百内音质最好的蓝牙耳机排行

近几年,随着蓝牙耳机的普及,越来越多的人喜欢在追剧、运动以及听歌时戴蓝牙耳机。蓝牙耳机的性能越来越强大,使用也越来越方便。下面,我来给大家推荐几款三百内音质好的蓝牙耳机,可以当个参考。 一、南卡小音舱Lite2蓝…

Ext4日志优化-iJournaling

背景 这几年随着SSD等高性能介质的普及,及其在大规模分布式存储系统上的应用。基于Append only的日志写入技术也应用得越来越多,这几天刚好有空,重读了Ext4文件系统的日志部分的内容,也正好看到一篇对Ext4日志技术进行优化的论文…

Measuement Comuputing 公司USB-1608GX设备EPICS驱动的安装和调试记录

1、USB-1608GX模块简介 单端输入的管脚图 差分输入管脚图 USB-1608GX模块具有以下功能: 1) 16位模拟输入: 16路单端通道或者8路差分通道。每个通道可编程的范围:-1V-1V,-2V-2V,-5V-5V,-10V-10…

经典数据结构之2-3树

2-3树定义 2-3树,是最简单的B-树,其中2、3主要体现在每个非叶子节点都有2个或3个子节点,B-树即是平衡树,平衡树是为了解决不平衡树查询效率问题,常见的二叉平衡书有AVL树,它虽然提高了查询效率&#xff0c…

Mac AndroidStudio开发环境搭建

Mac AndroidStudio开发环境搭建 1.在Mac上配置环境变量 执行 open ~/.bash_profile (该文件是配置环境变量) 如果提示没有 执行 touch ~/.bash_profile 进行创建 打开文件之后 新增jdk和android sdk 参考蓝色部分需要替换对应内容 #jdk export JAVA_HOME/Library/J…

【100个 Unity实用技能】 | InputField输入框组件实现输入限制,只能输入中文或特殊字符等

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

tar: invalid option -- ‘z‘

在嵌入式开发过程中,出现tar命令无法识别到z选项,说明我们系统的tar命令版本太旧了,需要进行版本更新 下载地址 ftp://alpha.gnu.org/gnu/tar/ 这里选择下载 tar-1.27.1.tar.gz 我发现这个网址有时候会缺少一些版本,其他版本…

NeRFStudio系列 Part 1:PipeLines概述

前言:Why NeRFStudio? NeRF社区是近两年来计算机领域最活跃的学术社区之一,各种具有milestone意义的算法层出不穷,各位作者的开源工作也做得非常扎实,非常多的工作都自带了code、data、project page。 但是后继者想要在这些伟大的…

gpt3.5和gpt4区别-gpt3.5和gpt4

gpt系列 GPT系列是OpenAI公司开发的一组基于人工智能深度学习技术的自然语言处理模型。GPT代表Generative Pre-trained Transformer,即预训练生成模型。目前,GPT模型已经推出了三代(GPT-1,GPT-2,GPT-3)&am…

【Linux】虚拟机VMware中Centos7系统设置静态ip的详细步骤详解,看这一篇就够啦!

此篇主要讲解一下在VMware中创建centos7之后如何设置静态IP,有时候外部的连接工具要连接过来,需要稳定的一个ip地址,不然老是换ip,我们平时测试练习学习一些东西都会造成阻碍。接下来我使用设置if-ens33文件和nmtui命令的两种方式…

企业绩效管理怎么做?

阅读本文您将了解:1.企业绩效管理是什么;2.企业绩效管理怎么做;3.绩效管理系统的优势所在。 一、绩效管理是什么 绩效考核和绩效管理是企业管理中必须了解和掌握的概念。绩效考核是企业对主要经济和技术指标完成情况按照既定方案进行的考核…

密码安全性和数据合规性

企业有责任妥善存储和共享信息。过去的可怕事件,如雅虎的大规模数据泄露导致数百万用户的敏感信息被泄露,突显了为什么企业主如此担心其组织中的数据安全。 数据泄露不仅会使用户的隐私受到威胁,而且还会对公司的财务和声誉产生不可逆转的影…

​Laravel 使用 MinIO 作为文件存储​

起因 我们的图片资源和其他静态资源都采用 S3 来进行存储,于是我们为了降低代码复杂度,我们在开发和测试阶段用的存储页时线上 S3 环境,一直以来一切都正常运行着。但是突然有一天,在国内的测试服上传文件到 S3 出现了超时的问题…

Vue核心 模板语法 数据绑定

1.3.模板语法 Vue模板语法包括两大类 1.插值语法 功能:用于解析标签体内容 写法:{{xxx}},xxx 是 js 表达式,可以直接读取到 data 中的所有区域 2.指令语法 功能:用于解析标签(包括:标签属性…

Vue3+Typescript+Vitest单元测试+组件Props篇

上一节我们学习了如何测试组件内部的emit事件组件事件测试篇,这一节我们来测试一下组件的props 新增一个组件ZmTag 非常简单,就是可以接受三个参数,然后我们分别来测试三个参数传入的效果 import { defineComponent } from "vue"…

Python GUI设计——Python语言介绍

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 写在前面 本Python专栏主要讲解 PythonGUI设计 tkinter从入门到实践 系列,本…

PHP实现使用函数实现对数组进行排序

目录 前言 一、使用函数实现对数组进行排序 1.1运行流程(思想) 1.2代码段 1.3运行截图 前言 1.若有选择,可实现在目录里进行快速查找; 2.本弹窗界面可以根据简单的要求实现一使用功能。同时可以实现自定义的设置&#xff1…

最受信任的低代码平台排行榜

近年来,随着数字化转型的兴起,低代码平台获得了大量关注。它允许用户在几乎没有编码知识的情况下创建应用程序,从而使企业能够简化其流程并提高效率。随着低代码平台的日益流行,要确定哪些平台最可靠、最值得信赖并非易事。在本文…