scanf()格式化输入

 scanf();有种带[]的格式化输出方式

此格式控制符的基本格式为:%[scanfset]

#include<stdio.h>
int main()
{	
	char str[100] ;
	
	scanf("%[^!]&s",str);//以!结束输入 
	//scanf("%[^!]%s",str);
	
//	scanf("%[^
]",str);//以回车结束输入 
//
//	scanf("%[123]%s",str);//只能输入123,遇到其他字符后开始不进行赋值
//	scanf("%[^123]%s",str);//只能输入非123,遇到其123后开始不进行赋值 
//	
//	scanf("%*c",str);//清理缓冲区中第一个字符,上次遗留下的
 
//	scanf("%*[^!]%*c",str); //跳过一行 
//	
	
	printf("%s",str);
	return 0;

 }

以下来自网络:

scanfset 有两种形式:一种是以非 “^” 字符开头的 scanset , 表示在读入字符串时将匹配所有在 scanfset 中出现的字符,遇到非scanfset 中的字符时输入就结束;另外一种形式是以 “^” 字符开头的scanfset ,表示在读入字符串时将匹配所有不在scanfset 中出现的字符,遇到scanfset 中的字符输入就结束。

“-”字符的使用。当“-”出现在scanfset中且两边都有字符时,大多数编译器都做了如下所述实现:“-”表示匹配从其左边的字符到右边字符之间所有的字符(按ASCII码排序)。如a-z表示a到z的所有字符,又如0-9表示0到9这十个数字。所以,当scanfset为0-9时表示只匹配数字串,当scanfset为A-Za-z时表示只匹配字符(包括大小写),当scanfset为^0-9时不匹配所有数字。注意,“-”的字符只有在其左右两边都有有效字符时才有这个作用,否则被认为是普通字符,如“ 0-4-6-9”匹配的字符为{0,1,2 ,3,,4, -, 6,7,8,9},这样也为输入“-”字符提供了方法。

原文地址:https://www.cnblogs.com/TaoR320/p/12680212.html