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,然后在末尾补’’
  • %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("%[^
]%*c",str);
printf("%s",str);

输入:
happy end
输出:
happy end

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

仅读取到指定字符
	scanf("%[^0-9]%d",str,&num);
	printf("%s
",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

原文地址:https://www.cnblogs.com/kafm/p/12721872.html