scanf函数返回值占位符详解,%*,%[]的应用

前言

scanf函数可以说是我们一开始就会接触的函数了,但在最近复习时我又找到而来一些之前不甚了解或是块要遗忘的知识,特作此篇。

一.返回值

我们之前提到了scanf返回值被忽略的问题:

scanf函数返回值被忽略-CSDN博客

那么scanf的返回值到底是什么呢

这个是他的声明

这个则是返回值的描述

翻译

scanf返回成功转换和分配的字段数;返回值不包括已读取但未分配的字段。返回值为0表示没有分配任何字段。如果在第一次尝试读取字符时发生错误,或者遇到文件结束字符或字符串结束字符,返回值为EOF。

由此我们可以知道,他返回的就是实际读取并成功赋值的变量数量,举个例子

第一种情况

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {int a;char b;char* c[5];
printf("%d",scanf("%d %c %s", &a, &b, c));return 0;
}

可以看到,返回值是3

第二种情况:

没有读取任何项:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {int a;
printf("%d",scanf("%d", &a));return 0;
}

输入a,%d占位符不会读取进去,并且程序会立即终止,所以返回值是1

第三种情况:第一次尝试读取字符时发生错误,或者遇到文件结束字符

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {int a;
printf("%d",scanf("%d", &a));return 0;
}

我们只需要连着按三次ctrl+z即可,至于为什么是三次,这是vs的一个小问题,搬来正常情况是按一次就行的。,EOF是个宏定义,它就是-1

二占位符

ok,解决了返回值的问题之后我们再来看看占位符,

先来几个基本的

1.%d   对应整形            %c对应字符               %s对应字符串                     %f单精度浮点数         %lf双精度浮点数

然后是与之相关的:

2.%hd  对应十进制的short int           %ho对应八进制的short int        %hx对应十六进制的short int

%hu  对应unsigned short int

3.%ld 十进制long int    %lo  八进制long int      %lx   十六进制long int       %lu  unsigned long int

4.%lld十进制的long long int         %llo八进制的long long int            %llx 十六进制的long long  int

%llu  long long unsigned int

5.%o 八进制int         %x十六进制int            %zd    size_t

然后是少见的

%g:6个有效数字的浮点数,整数部分超过刘伟后就会自定转化为科学计数法,且指数部分为小写e

%G:与%g相同,但指数部分为大写G。

%e:使用科学计数法的附带念书,指数部分e小写,

%E:与%e一样,但指数部分E大写。

%le 科学计数法表示的long double

ok,接下来才是今天的主角%*与%[].

1.%*

他是一个赋值忽略符,该占位符不会将解析而后的值放入对应变量中,而是直接丢弃

举例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {int a;
scanf("%*d%d", &a);
printf("%d", a);return 0;
}

可以发现,我们先输入的3不见了,而后输入的2则被用于给a赋值

2.%[]

[]内指定一组字符,遇到不在集合中的字符时读取结束,这里就要引入“^”了,在这里^表示”非“,

举例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {char a[10];
scanf("%[^\n]", a);
printf("%s", a);return 0;
}

可以发现,此次读取是到回车才停下来的,[^\n]表示的也正是非回车,基于此我们可以更为便捷的调用scanf函数。

ok今天关于scanf函数的分享就到这里了,觉得有用的话就点个免费的赞支持一下吧。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PIC项目(9)——基于PIC16F877A的环境光照检测系统

1.课题背景 近年来&#xff0c;城市光污染问题逐渐显现。白天&#xff0c;玻璃幕墙、釉面砖墙、磨光大理石和各种涂料等装饰反射光线&#xff0c;明晃刺眼&#xff1b;夜晚&#xff0c;商场、酒店、超市楼顶的广告牌、电子屏、霓虹灯炫烂夺目。面对这样的光污染&#xff0c;人们…

关于Omlox定位标准(一)——omlox hub

关于Omlox定位标准 Omlox是世界上第一个开放的定位标准&#xff0c;旨在实现灵活的实时定位解决方案&#xff0c;&#xff0c;可以使用来自各个制造商的单元。“omlox"一词源自拉丁词汇"omni”&#xff08;无处不在&#xff09;和"locus"&#xff08;位置…

使用element中el-cascader级联选择器动态懒加载以及回显 (单选)

<template><!-- 新增||修改弹框 --><el-dialog :close-on-click-modal"false" :close-on-press-escape"false" :title"title" :visible.sync"open"width"800px" append-to-body><el-form ref"for…

仓库申请报错:Cannot access gated repo for url https://huggingface.co/api

这个报错主要是使用huggingface里面的仓库的模型或其他文件需要提供访问权利&#xff0c; 1.需要有自己的huggingface账号&#xff08;没有则创建&#xff09; 2.右上角点进个人中心&#xff0c;然后找到Access Tokens&#xff0c; 3.设置新的或者Tokens&#xff0c;设置为读…

Linux之缓冲区的理解

目录 一、问题引入 二、缓冲区 1、什么是缓冲区 2、刷新策略 3、缓冲区由谁提供 4、重看问题 三、缓冲区的简单实现 一、问题引入 我们先来看看下面的代码&#xff1a;我们使用了C语言接口和系统调用接口来进行文件操作。在代码的最后&#xff0c;我们还使用fork函数创建…

牛客网面试题知识点记录-02

1.collection接口 2.在构造方法中调用方法A,若方法A被子类重写&#xff0c;则会先调用子类的方法A。举例如下题&#xff1a; 此时会输出null&#xff0c;调用顺序为&#xff1a;子类初始化&#xff0c;但是子类实现了Base&#xff0c;会先执行Base的构造方法&#xff0c;构造…

【C语言数组传参】规则详解

目录 数组传参介绍 数组传参规则 数组传参的实参 特殊情况一&#xff1a;sizeof&#xff08;数组名&#xff09; 特殊情况二&#xff1a;&数组名 数组传参的形参 数组传参使用数组名作为形参接收 形参如果是⼀维数组 形参如果是⼆维数组 数组传参使用指针作为形参…

登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10

人工智能太疯狂&#xff0c;传统劳动力和内容创作平台被AI枪毙&#xff0c;弃尸尘埃。并非空穴来风&#xff0c;也不是危言耸听&#xff0c;人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程&#xff0c;你问我绘画行业未来的样子&#xff1f;我只好指着Cont…

nginx源码分析-3

这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。 在初始化http连接的函数ngx_http_init_connection中&#xff0c;nginx为http连接初始化了处理请求的回调函数&#xff0c;之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设…

Python生成器 (Generators in Python)

Generators in Python 文章目录 Generators in PythonIntroduction 导言贯穿全文的几句话为什么 Python 有生成器Generator&#xff1f;如何获得生成器Generator&#xff1f;1. 生成器表达式 Generator Expression2. 使用yield定义生成器Generator 更多Generator应用实例表示无…

一文道破Java NIO

文章目录 一、常见的几种 Java IO 工作模式1.1 同步阻塞 IO1.2 同步非阻塞 IO1.3 异步非阻塞 IO 二、Java NIO 多路复用详解2.1 原理图2.2 基础组件简介SelectorChannelSelectionKey 2.3 Java NIO 代码示例2.4 Linux 支持多路复用的系统调用函数select 函数poll 函数epoll 函数…

十二星座女生、谁最拥有当潮 “女神范儿” 排名 。

请点击 → 「链接」 ← 查看&#xff01; ​​​​​​​ 冠军&#xff08;天秤座&#xff09;、亚军&#xff08;处女座&#xff09;、季军&#xff08;巨蟹座&#xff09; 第四名&#xff08;双鱼座&#xff09;、第五名&#xff08;狮子座&#xff09;、第六名&…