当前位置: 首页 > news >正文

c语言-scanf函数的用法

文章目录

  • 一、scanf是什么?
  • 二、通过scanf进行赋值
    • scanf 输入一段带空格的句子, %[^\n] 格式字符串。
  • 三、赋值忽略符


一、scanf是什么?

函数原型:int scanf ( const char * format, … );
scanf是一个格式输出库函数,因为它是库函数所以它有一个头文件,这个头文件是 <stdio.h>,在使用时一定要引用这个头文件。

scanf函数是一个输入函数,所以接收的参数类型需要满足一定的格式
输入的格式有:各种字符,如字符串,单字符和数字等

scanf从缓冲区读取数据,每次读取一个数据,如果缓冲区中无内容,则出现堵塞,在运行窗口要求用户输入;

scanf(“%d%d”, &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF(-1)。
且返回值为int型

#include<stdio.h>
int main()
{ int a = 0;int b = 0;float f = 0.0f;int r=scanf("%d %d %f",&a, &b, &f);printf("a=%d b=%d f=%f",a, b, f);printf("r = %d\n", r);return 0;
}

scanf
如果输入2个数后,按 ctrl+z ,提前结束输入:
error
如果一个数字都不输入,直接按3次 ctrl+z ,输出的 r 是-1,也就是EOF 。
error

二、通过scanf进行赋值

指定输入数据所占列宽
scanf(%3d%3d”,&a,&b)
输入:123456系统自动将123赋给a,456赋给b      %后面加‘ * ’用来抑制输入。
scanf(%2d%*3d%2d”,&a,&b)
输入:1234567。将12赋给a,67赋给b。个数据”345”被跳过不赋给任何变量。 输入数据流分隔。根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。
如:scanf(%d%c,%d”,&a,&b,&c);
如果输入如下信息:12r12则scanf函数在接收数据时发现”r”类型不匹配,于是把12赋值给a,把”r”赋给变量b,最后把12赋给c。隐示分隔符。空格、制表符’\t’,换行符/回车键’\n’都是C语言认定的数据分隔符。

scanf 输入一段带空格的句子, %[^\n] 格式字符串。

这将允许 scanf 读取输入,直到遇到换行符为止,从而允许输入包含空格的句子。

#define   _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main() {char sentence[100];printf("请输入一段带空格的句子:\n");scanf(" %[^\n]", sentence);printf("输入的句子是:%s\n", sentence);return 0;
}

scanf

三、赋值忽略符

#include<stdio.h>
int main()
{ int year = 0;int month = 0;int day = 0;scanf("%d-%d-%d",&year, &month, &day);printf("%d %d %d\n",year, month, day);return 0}

如果用户输入2020-12-12,就会正确解读数据,但是如果输入2020/12/12,scanf()就会解析数据失败。

scanf()提供了一个赋值忽略符,只要把*夹在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。
dc1
dc2

http://www.lryc.cn/news/476394.html

相关文章:

  • AI带货主播插件开发之商品推荐模块!
  • 使用Nginx作为反向代理和负载均衡器
  • 【数据结构二叉树】C非递归算法实现二叉树的先序、中序、后序遍历
  • 解决网盘资源搜索难题的利器——全面解析哎哟喂啊盘搜及其优秀推荐平台
  • 草料二维码:低成本高效率的访客管理解决方案
  • qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)
  • 在VSCode中读取Markdown文件
  • Linux rabbitmq客户端 SimpleAmqpClient 源码编译
  • 一台手机可以登录运营多少个TikTok账号?
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • k8s Service四层负载:服务端口暴露
  • QT 关于mousePressEvent无法过滤
  • 【VScode】深度对比:Cursor与VScode(CodeMoss)工具,谁才是你的GPT编程最佳助手?
  • 大数据计算里的-Runtime Filter
  • 【工具变量】大数据管理机构改革DID(2007-2023年)
  • Linux -- 初识信号
  • Ubuntu系统如何实现键盘按键映射到其他按键(以 Ctrl+c 映射到 F3,Ctrl+v 映射到 F4 为例)
  • el-select、el-autocomplete的选项内容过长显示完整内容
  • Go-单元测试
  • 【Linux】IPC 进程间通信(一):管道(匿名管道命名管道)
  • Kotlin类与对象
  • Windows版 nginx安装,启动,目录解析,常用命令
  • 基于51单片机的电子隐形防盗网proteus仿真
  • Fish Agent:多语言 Voice-to-Voice 开源语音模型;Runway 推出摄像机运镜功能丨 RTE 开发者日报
  • locust压测工具环境搭建(Linux、Mac)
  • 欠定方程有多个真正解,超定方程可能无解所以有最小二乘解
  • LeetCode27:移除元素
  • JAVA 插入 JSON 对象到 PostgreSQL
  • 视图,物化视图,普通表区别简介
  • C++ | Leetcode C++题解之第530题二叉搜索树的最小绝对差