scanf()的使用
Posted 灬F灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 seconds with return value 8 请按任意键继续. . .
此段代码要求用户输入a,b的数值。
在scanf语句的格式串中由于没有非格式字符在“%d%d”之间作输入时的间隔,所以永无在输入的时候两个数据之间需要用空格或者回车间隔。
格式字符:
d格式字符。用来输出十进制整数。有以下几种用法:%d,按整形数据的实际长度输出。%md,m为指定的输出字段的宽度。%ld,输出长整形数据。
o格式符,以八进制整形式输出整数。
x格式符,以十六进制数形式输出整数。
u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。
c格式符,用来输出一个字符。
s格式符,用来输出一个字符串。
f格式符,用来输出实数(包括单双精度),以小数形式输出。
e格式符,以指数形式输出实数。
g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出是占宽度较小的一种),且不输出无意义的零。
p格式符,用于变量地址的输出。
%[scanfset]:scanfset 有两种形式:一种是以非 “^” 字符开头的 scanset , 表示在读入字符串时将匹配所有在 scanfset 中出现的字符,遇到非scanfset 中的字符时输入就结束;另外一种形式是以 “^” 字符开头的scanfset ,表示在读入字符串时将匹配所有不在scanfset 中出现的字符,遇到scanfset 中的字符输入就结束。
例如: scanf("%[^,]",a); //在输入 ‘,‘ 的时候后面输入的内容将不会接收
其余出现的都可以理解为非格式字符。
“*”符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
#include<stdio.h> int main() { int a,b; scanf("%d,%*d,%d",&a,&b);m n
a=m b= c=n
--------------------------------
Process exited after 2.551 seconds with return value 11
请按任意键继续. . .printf("a=%d\tb=%d",a,b); }在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
4,3,2 a=4 b=2 -------------------------------- Process exited after 5.453 seconds with return value 7 请按任意键继续. . .
在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例:
下面的代码因为中间没有使用空格等间隔,所以a=m,b=空格,c=n。
#include<stdio.h> int main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("a=%c b=%c c=%c",a,b,c); }
m n a=m b= c=n -------------------------------- Process exited after 2.551 seconds with return value 11 请按任意键继续. . .
以上是关于scanf()的使用的主要内容,如果未能解决你的问题,请参考以下文章