[C] scanf - 格式输入函数

scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中。

scanf 函数签名

scanf("格式控制字符串", 变量地址列表)

  scanf 函数是一个标准库函数,函数原型位于 <stdio.h> 中。与 printf 函数相同,C语言允许隐式使用 scanf 函数,即可以不提前包含 <stido.h> 头文件。如果隐式使用 scanf 或 printf 函数,编译时系统会发出隐式调用警告。

  scanf 不能在控制台回显非格式化占位符字符串,也就是说不能在控制台显示输入提示。

  scanf 第一个参数 “格式控制字符串” 可以分为两部分,一部分为格式占位符,另一部分为变量分隔符。

格式占位符

%[*][输入数据宽度][长度]类型

  scanf 支持输入的类型如下:

    1. d - 十进制整数

    2. o - 八进制整数

    3. x - 十六进制整数

    4. u - 无符号十进制整数

    5. f 或 e - 小数形式或指数形式的实型数

    6. c - 单个字符

    7. s - 字符串

变量分隔符

  变量分隔符是指在输入多个变量数据时用于分隔输入数据的非格式占位符。例如:

scanf("%dA%d", &a, &b)

在控制台输入:123A456

结果为:a = 123, b = 456

  

  其中 scanf 第一个参数中的 A 就是一个变量分隔符。如果 scanf 第一个参数中没有指明变量分隔符,那么系统默认空格符、Tab符或回车符作为分隔符,C编译器在遇到这三个字符或者非法字符时,就认为输入的数据结束。例如:

scanf("%d%d", &a, &b);

在控制台输入:
123 456

或者
123
456

结果都是:a = 123, b = 456

scanf 函数实例

1. 一般用法

int main(void) {
    int a, b;
    printf("Input a, b\n");
    scanf("%d%d", &a, &b);
    printf("a=%d, b=%d\n", a, b);
    return 0;
}

  输入与输出:

$ ./a.out
Input a, b
123 456
a=123, b=456

2. 使用 * 符号表示跳过该输入值

  将上例代码修改为:

scanf("%d%*d%d", &a, &b)

  输入与输出:跳过第二个输入值 456, 将第三个输入值 789 赋给了变量 b。

$ ./a.out
Input a, b
123 456 789
a=123, b=789

3. 格式占位符中限定数据宽度

  将上例代码修改为:

scanf("%4d%4d", &a, &b);

  输入与输出:

$ ./a.out
Input a, b
12345 56789
a=1234, b=5

$ ./a.out
Input a, b
123456789
a=1234, b=5678

  第一次输入时,C程序直接截取了 12345 的前四位赋给了变量 a,然后从剩余的 5 56789 中准备再截取四位赋给变量 b,但在第二个位置遇到了空格符,之前说过C程序是默认空格符为数据分隔符,因此C程序认为该变量数据输入结束,将 5 赋给了b。

  

[C] scanf - 格式输入函数

时间: 2024-10-22 09:51:21

[C] scanf - 格式输入函数的相关文章

printf/scanf格式

(1)打印字符 char c; printf("%c",c); (2)打印整形 int i; printf("%d",i); //有符号十进制数 printf("%u",i); //无符号十进制数 (3)打印浮点数 float f; printf("%f",f); (4)打印指针 int *p; printf("%p",p); (5)打印八进制和十六进制 printf("%o",i);

C语言格式输入函数scanf使用

函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序 函数原型为 int scanf(const char * restrict format,...); 函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置 scanf函数返回成功读入的数据项数,读入数据时遇到了"文件结束"则返回EOF 控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白,空白符可以是

scanf格式控制符

格式控制 1. %d %o %x %c %s %f %e 无%u格式.%g格式 2. scanf("%3d%3d", &a, &b); 输入:123456 //a=123,b=456 3. scanf("%2d%*3d%2d", &a, &b); 输入:1234567 //a=12,跳过345,b=67. 4. scanf("%7.2f",&a); //不合法的,不能输入:12345.67使a的值为1234

Standard C 语言标准函数库介绍

全面巩固所知所学,往精通方向迈进! Standard C 语言标准函数库速查 (Cheat Sheet) from:http://ganquan.info/standard-c/function/ C语言标准头 <assert.h> 断言 <ctype.h> 字符类测试 <errno.h> (部分)库函数抛出的错误代码 <float.h> 浮点数运算 <limits.h> 检测整型数据类型值范围 <locale.h> 本土化 <

C语言scanf输入格式 printf输出格式

对于刚接触C语言的同学来说 可能会遇到这个问题 因为博主也是个菜鸟经常因为搞不清楚单精度双精度还有输入输出格式的问题 就这个问题也百度的很多次 所以在这里总结一下分享给大家 printf输出格式 1.转换说明符       %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)       %c             字符       %d             有符号十进制整数       %f              浮点数(包括float和doulbe)      

C语言输出函数(printf)和输入函数(scanf)

前面的几个例子都用到了输出函数printf,例1-3还用到了输入函数scanf,这里我们先简单介绍一下它们的格式,以便后面使用.沈阳463整形医院http://www.hengnaya.com/scanf和 printf这两个函数分别称为格式输入函数和格式输出函数.其意义是按指定的格式输入输出值.因此,这两个函数在括号中的参数都由以下两部分组成:1) 格式控制串:格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型. 在printf函数中可以在格式控制串内出现非格式控制字符,

scanf中的%[^\n]%*c格式

scanf中的%[^\n]%*c格式 (2011-02-19 16:12:38) 转载▼ 标签: 控制字符 空白字符 字符串 变量 整数 it 分类: C语言编程 文章转载自http://blog.csdn.net/sun_top/archive/2009/06/02/4235992.aspx scanf 语法:   #include <stdio.h>  int scanf( const char *format, ... ); 类似函数有       int scanf(const cha

C语言-数据类型、常量、变量、变量作用域、printf、scanf函数

4.数据类型介绍 数据:文本数据.音频.视频.图像.数字 C语言中有5大数据类型:基本类型.构造类型.空类型.指针类型.自定义类型 基本数据类型: 整型    长整型long int    整型int(4)    端整型short int 实型    单精度float(4)    双精度 double(8) 字符型   char(1) 内存: 1> 内存分配:4G存储大小:4*1024*1024*1024Byte; 内存的基本单元为一个字节(就是8bit) 2> 内存区域:栈 (存放局部变量)

scanf()的使用

scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中. 如下面代码: #include<stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d\tb=%d\n",a,b); } 运行结果: 4 3 a=4 b=3 -------------------------------- Process exited after 3.202 s