C语言之scanf函数

scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。scanf函数的一般形式为:scanf(“格式控制字符串”, 地址表列)
我们从以下几个方面讨论这段代码:
1、scanf格式控制字符串
格式字符串的一般形式为:  %[*][输入数据宽度][长度]类型
(1)类型

格式

字符意义

d

输入十进制整数

o

输入八进制整数

x

输入十六进制整数

u

输入无符号十进制整数

f或e

输入实型数(用小数形式或指数形式)

c

输入单个字符

s

输入字符串

(2)* 符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
#include<stdio.h>
int main(void)
{
     scanf("%d %*d %d",&a,&b);
     return 0; 
}
当输入为:1  2   3时,把1赋予a,2被跳过,3赋予b。
(3)宽度
#include<stdio.h>
int main(void)
{
    scanf("%5d",&a);//输入12345678只把12345赋予变量a,其余部分被截去。
    scanf("%4d%4d",&a,&b);//输入12345678将把1234赋予a,而把5678赋予b。
    return 0;
}
(4)长度
h表示按短整型量输出,l表示按长整型量输出。
  1》%L修饰符(注意大写的L):和浮点转换说明符一起使用,表示一个long double值。
   示例:“%Lf”和“%10.4Le”
   注:%l的修饰符(小写的l):和整数说明符一起使用,表示一个long int 或者unsigned long int 类型值。
   示例:“%ld”和“%8lu”。
   2》%h修饰符:和整数转换说明符一起使用,表示一个short int 或者 unsigned short int 类型数值。
   示例:“%hu”、“%hx”和“%6.4hd”

2、地址列表

例如:&a、&b分别表示变量a和变量b的地址。
这个地址就是编译系统在内存中给a、b变量分配的地址。
在赋值表达式中给变量赋值,如:
    a=567;
a为变量名,567是变量的值,&a是变量a的地址。但在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。
这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

3、注意事项

(1)scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能企图用此语句输入小数为2位的实数。

(2)scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。

(3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入,数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

#include <stdio.h>
int main(void)
{
    char a,b;
    printf("input character a,b\n");
    scanf("%c%c",&a,&b);
    printf("%c%c\n",a,b);
    return 0;
}
由于scanf函数"%c%c"中没有空格,输入M  N,结果输出只有M。而输入改为MN时则可输出MN两字符。

4、实例

输入三个小写字母,输出其ASCII码和对应的大写字母。
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	char a,b,c;
	printf("请用户输入三个小写字母,输入时字母之间使用空格隔开:");
	scanf("%c %c %c",&a,&b,&c);
	printf("%c %c %c相对应的ASCII码值为:%d %d %d\n",a,b,c,a,b,c);
	printf("%c %c %c相对应大写字母为:%c %c %c\n",a,b,c,a-32,b-32,c-32);
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值