c语言scanf fscanf sscanf_fsancf怎么判断-程序员宅基地

技术标签: c语言  开发语言  

1.scanf

概念

scanf用于从键盘(标准输入流)中读取数据,会返回成功读取到数据的个数

stdin 为标准输入流,这里指从键盘输入的数据

比较简单,这里不多介绍了。

用法

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

}

2.fscanf()

概念

可以看出,描述与scanf基本相同。

fscanf可以从所有流中读取数据,使用方法与scanf差不多

失败会返回EOF

用法

1.从文件中读取数据
int main()
{
	FILE* pf = fopen("text.txt", "r");//流的地址
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	int a;
	float b;
	char m[10];
	fscanf(pf, "%d %f %s", &a, &b, m);
	printf("%d %f %s", a, b, m);
	fclose(pf);
	pf = NULL;
	return 0;
}
2.从键盘读取数据

我们知道stdin是标准输入流。所以只需把stdin当成参数传进去就行

#include<stdio.h>
int main()
{
    int a =0;
    fscanf(stdin,"%d",&a);
    printf("%d",a);
    return 0;
}

3.sscanf

概念

对比可以看出,这个函数是从字符串中读取数据。

失败的话会返回EOF

用法

int main()
{
	char* str = "abcdefg 100 3.14";
	char s1[10];
	int a;
	float b;
	sscanf(str, "%s %d %f", s1, &a, &b);
	printf("%s %d %f", s1, a, b);
	return 0;
}

4.进阶用法

以sscanf举例

1.指定精度

2.指定读取范围

#include<stdio.h>
int main()
{

	char str1[20];
	char str2[20];
	sscanf("123456abcdedf789", "%[0-9]",str1);
	printf("str1=%s\n", str1);
	sscanf("123456abcdedf789", "%[0-9a-z]", str2);
	printf("str2=%s\n", str2);
	return 0;
}

[^a-z]不读取a-z中的字符

%*[a-z]%[1-9]  两次读取,第一次不反回,第二次返回。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/l23456789mmmmm/article/details/133604600

智能推荐

组件化架构漫谈_组件化架构设计-程序员宅基地

文章浏览阅读2k次。[http://www.cocoachina.com/ios/20160929/17610.html]组件化架构漫谈2016-09-29 08:20 编辑: 阿花君霸占路人 分类:iOS开发 来源:刘小壮的投稿49 40035iOS开发设计模式组件化架构滴滴架构淘宝架构招聘信息:cocos2d-x休闲游戏开发Java工程师Mac开_组件化架构设计

Netdata内网离线部署_redhat 7.8 离线安装 netdata-程序员宅基地

文章浏览阅读1.3k次。介绍Netdata 是一款 Linux 性能实时监测工具。Netdata是Linux系统实时性能监测工具,提供web界面的界面视角。它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。1.优美的界面:bootstrap框架下的控制界面2.自定义的控制界面:你可以使用简单的HTML代码去自定义控制界面(不需要使用javascript)3.极其的快速而高效:程序使用C进行编写(默认安装下,预计只有2%的单核CPU使用率和少许的内存使用率)4.零_redhat 7.8 离线安装 netdata

数据结构与算法——搜索_c++某网格向外面扩展不考虑方向-程序员宅基地

文章浏览阅读129次。文章目录1.内容概述2.岛屿数量2.1 题目描述1.内容概述2.岛屿数量2.1 题目描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"],_c++某网格向外面扩展不考虑方向

如何遍历DOM:HTML节点遍历技巧-程序员宅基地

文章浏览阅读734次。介绍本系列中的前一个教程如何访问DOM中的元素 ,介绍了如何使用document对象的内置方法通过ID,类,标记名称和查询选择器来访问HTML元素。 我们知道,DOM被构造为一个以document节点为根节点和每个其他节点(包括元素,注释和文本节点)作为各个分支的节点树 。通常情况下,您将需要在DOM中移动,而不事先指定每个元素。 学习如何浏览DOM树并从分支转移到分支对于理解如何使用JavaSc..._遍历body所有子节点dom

python 子函数调用父函数的变量_python中子类调用父类函数的方法示例-程序员宅基地

文章浏览阅读1.7k次。前言本文主要给大家介绍了关于python子类调用父类函数的相关内容,Python中子类中的__init__()函数会覆盖父类的函数,一些情况往往需要在子类里调用父类函数。下面话不多说了,来一起看看详细的介绍:如下例程里,???处是需要调用父类函数的地方,接下来结合例程具体介绍。# -*- coding:utf-8 -*-class Student:def __init__(self,name):s..._python函数中的变量可以在子函数中访问吗

动画Animation_必须为“system.windows.media.animation.doubleanimation-程序员宅基地

文章浏览阅读543次。Animation概述System.Windows.Media.Animation 命名空间提供一些类型,这些类型支持属性动画功能,包括时间线、演示图板和关键帧。.17个“类型名+Animation”类,这些类使用插值。 22个“类型名+AnimationUsingKeyFrames”类,这些类使用关键帧动画。 3个“类型名+AnimationUsingPath”类,这些类使用基于路径的动画。简单动画DoubleAnimation在指定的Duration上使用线性..._必须为“system.windows.media.animation.doubleanimationusingkeyframes”指定 t

随便推点

MyBatis 动态SQL之<choose><when><otherwise>标签-_mybatis choose when-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏29次。MyBatis 中动态语句 choose-when-otherwise 类似于 Java 中的 switch-case-default 语句。由于 MyBatis 并没有为 if 提供对应的 else 标签,如果想要达到…… 的效果,可以借助 、、 来实现。_mybatis choose when

多种智能优化算法性能对比(FHO,CO,SSA,PSO等)_与pso算法相类似的算法-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏30次。FHO算法模拟了火鹰的觅食行为,是一个考虑放火、火势蔓延与捕捉猎物的过程,其算法流程如下图所示。FHO数学模型描述如下:Step 1: 首先,确定若干候选解X作为火鹰与猎物的位置向量,利用随机优化确定初始位置。表示如下:其中,N为候选解的总数,表示第i个候选解的第j个决策变量,表示候选解的初始位置,表示第i个候选解的第j个决策变量候选解的最小最大边界,rand∈(0,1)。_与pso算法相类似的算法

Kubernetes安装Seata1.8.0(注册到Nacos,连接外置数据库)_ks8部署seata集成到nacos-程序员宅基地

文章浏览阅读432次,点赞5次,收藏3次。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。seata1.8.0官方介绍。_ks8部署seata集成到nacos

RK3588网口拓展:8口千兆傻瓜式交换机RTL8370N_rtl8370使用-程序员宅基地

文章浏览阅读422次。有问题发到评论区_rtl8370使用

vue三级联动下拉菜单_vue三级联动下拉列表怎么实现-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏3次。给每个下拉菜单绑定一个change事件。当下拉菜单选项改变时,在组件中设置新数据,使得下级下拉菜单的选项随之改变。Vue.js是构建用户界面的渐进式框架,它可以轻松实现下拉菜单的三级联动。为绑定下拉菜单的选项,我们需要设计一个对应的数据结构。可以使用一个数组变量表示三级联动的选项。将设计好的数据绑定到菜单的选项中,并在组件的mounted钩子函数中初始化数据。在Vue组件中,设计一个select组件,它包含三个联动的下拉菜单。为了实现多级联动,我们可以使用递归的方法在组件中实现。_vue三级联动下拉列表怎么实现

烂笔头笔记:关于frontend-maven-plugin插件无法下载nodejs和npm的问题_windows环境下无法从github下载frontend-maven-plugin:1.12.0-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏7次。目录简介解决方法参考资料简介frontend-maven-plugin是一个将maven与nodejs结合的插件,旨在maven生命周期中帮你下载并且本地(相对于项目来说)安装一份node和npm,并且执行npm install命令,并且还能执行其他的组合命令例如:Bower, Grunt, Gulp, Jspm, Karma, 或者 Webpack. 支持Windows, OS X 和Lin..._windows环境下无法从github下载frontend-maven-plugin:1.12.0