现在的位置: 首页 > 02 运算和数据类型 > 正文

格式化输入函数scanf

2014年09月15日 02 运算和数据类型 ⁄ 共 1096字 ⁄ 字号 格式化输入函数scanf已关闭评论

格式化输入函数 scanf 的功能非常强大

scanf函数的一般形式为:

    scanf(“格式控制字符串”, 地址表列);

scanf

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    printf("decimal: %d\n", n);       /* 十进制   */
    printf("octal: %o\n", n);         /* 八进制   */
    printf("hexadecimal: %x\n", n);   /* 十六进制 */
    printf("char: %c\n", n);          /* 字符 */  
 
    return 0;
}

输入49,输出结果如下:

decimal: 49
octal: 61
hexadecimal: 31
char: 1

保存在计算机中的数据显示的形式可以有多种。

如果认为输入的是16进制的数字,程序可以写成

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
    int n;
    scanf("%x", &n);
    printf("decimal: %d\n", n);
    printf("octal: %o\n", n);
    printf("hexadecimal: %x\n", n);
    printf("char: %c\n", n);
 
    return 0;
}

输入41,输出结果如下:

decimal: 65
octal: 101
hexadecimal: 41
char: A

16进制的41转换成十进制,就是 4*16+1 = 65

输入数据的类型,其格式符和意义如下表所示:

格式 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入实型数(用小数形式或指数形式)
c 输入单个字符
s 输入字符串

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
    int year, month, day;
 
    scanf("%d-%d-%d", &year, &month, & day);
    printf("%d-%02d-%02d\n", year, month, day);
 
    return 0;
}

输入:
2014-9-9

输出结果如下:
2014-09-09

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
    int year, month, day;
 
    scanf("date:%d-%d-%d", &year, &month, & day);
    printf("%d-%02d-%02d\n", year, month, day);
 
    return 0;
}

输入:
date:2014-9-9

输出结果如下:
2014-09-09

* 表示跳过

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
    int a, b;
 
    scanf("%d%*d%d", &a, &b);
    printf("a=%d b=%d\n", a, b);
 
    return 0;
}

输入:
1 2 3
输出:
a=1 b=3

抱歉!评论已关闭.