vi企业形象设计全套案例百家号关键词排名优化
文章目录
- 一、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;
}
如果输入2个数后,按 ctrl+z ,提前结束输入:
如果一个数字都不输入,直接按3次 ctrl+z ,输出的 r 是-1,也就是EOF 。
二、通过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;
}
三、赋值忽略符
#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()提供了一个赋值忽略符,只要把*夹在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。