scanf( )与正则表达式

scanf( )的用法

  • scanf()从stdin(标准输入)读取,包含在头文件stdio.h中,与此类似的有
    fscanf() 指定输入流
    sscanf() 指定缓存区
  • scnaf()的用法

(1)scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始。
(2)scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃.
(3)scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF.

  • scanf() 的控制字符
控制字符说明控制字符说明
%c一个单一的字符%p一个指针
%d一个十进制整数%n一个等于读取字符数量的整数
%i一个整数%s一个字符串
%e, %f, %g一个浮点数%%一个精度符号
%o一个八进制数%[ ]一个字符集
%x一个十六进制数%u一个无符号整数

  • scanf()的一些用法
    • “%ns”,n为整数,读入的字符串最长不超过n,然后在末尾补’\0’
  • %nf 读入的浮点数最多有n位整数,位数多于n,会截断。
  • “%n[a-z]” 读入最多n个字符,如果遇到非a-z的字符,停止
  • “%[^=]” 读入任意多的字符,直到遇到"="停止
  • “%n[^=]” 读入"="号前的至多n 个字符
  • "*"表示该输入项读入后不赋予任何变量,即跳过该输入值
  • 比如%[0-9]表示只读入’0’到’9’之间的字符,%[a-zA-Z]表示只读入字母,
    '-'是范围连接符,也可以直接列出你需要读入的字符。

example

用scanf()代替gets()读取一整行存储为字符串 //哼 再也不用gets()了
char *str;
scanf("%[^\n]%*c",str);
printf("%s",str);

输入:
happy end
输出:
happy end

其中,*%c的作用是吸收\n

仅读取到指定字符
	scanf("%[^0-9]%d",str,&num);
	printf("%s\n",str);
	printf("%d",num);

输入:
happy123
输出:
happy
123

2018/4/10


在 printf 中,* 作为整型参数控制输出长度,如 %*s 相当于%ns,
%*s不会截断输出,%.*s会截断输出,均不补足长度
%*d不会截断输出空格补足长度,%.*d不会截断输出,会用前导0补足长度

int len, num;
scanf("%d%d",&len, &num);
printf("%*d",len,num);
//输入5 20
//输出    20
//输入1 20
//输出2

2019/10/20

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值