1.头文件:#include<stdio.h>
2. 定义函数 int sscanf (const char *str,const char * format,........);
3.函数说明:
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。
4.用途:一个字符串中读进与指定格式相符的数据。字符串操作是平常用途之多,截取,追加等等。也经常从文件中读取一行,取出所需要的字符串。基本有些是固定格式的。都可以用sscanf来得到。
其实就是format格式化字符串。下面就是经常用的小例子,练习一遍就能够十分熟悉使用了。对于广大网友来说还是非常有帮助性。
// 1.%s
char buf[520] = {0};
sscanf("12qw..er", "%s", buf);// 从字符串“12qw..er”取%s 得到buf;
printf("%s\n",buf);//buf = "12qw..er"
// 2.取指定长度的字符串
sscanf("12qw..er", "%4s", buf);
printf("%s\n", buf);// buf = "12qw"
// 3.空格字符串
char str[10][256] = { 0 };
//memset(str, 0, sizeof(str));
sscanf("12 qw er", "%s", str[1]);
printf("%s\n", str[1]);// str[1] = "12"
// 说明遇到空格之间的就是%s
memset(str, 0, sizeof(str));
sscanf("12 qw er", "%s%s%s", str[1],str[2],str[3]);
printf("[1:%s,2:%s,3:%s]\n", str[1],str[2],str[3]);
// str[1]= "12",str[2] = "qw",str[3]= "er"
// 4.取到指定字符为止的字符串
// 空格
memset(str, 0, sizeof(str));
sscanf("1234a qwert789 p1234r", "%[^ ]", str[1]);
printf("[1:%s]\n", str[1]);// str1 = "1234a"
// 数字3
memset(str, 0, sizeof(str));
sscanf("1234a qwert789 p1234r", "%[^3]", str[1]);
printf("[1:%s]\n", str[1]);// str1 = "12"
// 字母p
memset(str, 0, sizeof(str));
sscanf("1234a qwert789 p1234r", "%[^p]", str[1]);
printf("[1:%s]\n", str[1]); // str1 = "1234a qwert789 "
// 符号*
memset(str, 0, sizeof(str));
sscanf("1234a qwert789 p*1234r", "%[^\*]", str[1]);
printf("[1:%s]\n", str[1]); // str1 = "1234a qwert789 p"
sscanf("1234a q*wert789 p*1234r", "%[^\*]", str[1]);
printf("[1:%s]\n", str[1]); // str1 = "1234a q"
// 符号"
memset(str, 0, sizeof(str));
sscanf("1234a qwer\"t789 p*1234r", "%[^\"]", str[1]);
printf("[1:%s]\n", str[1]); // str1 = "1234a qwer"
memset(str, 0, sizeof(str));
sscanf("1234a q\"wert789 p*\"1234r", "%[^\"]%[^\"]", str[1],str[2]);
printf("[1:%s,2:%s]\n", str[1],str[2]); // str1 = "1234a q" str2 = ""
memset(str, 0, sizeof(str));
sscanf("1234a q\"wert789 p*\"1234r", "%[^\"]%s", str[1], str[2]);
printf("[1:%s,2:%s]\n", str[1], str[2]); // str1 = "1234a q" str2 = "wert789"
// 5.取仅包含指定字符集的字符串
// [a|b|C|&| |]:表示,从当前位置起,遇到[]里面的符号就输出。
// 一旦不是[]之间的字符就不输出
// 说明从开头取1-9和a-z之间的字符,遇到其余的字符就结束
memset(str, 0, sizeof(str));
sscanf("123456abcd789BCDfgPP", "%[1-9a-z]", str[1]);
printf("[1:%s]\n", str[1]);// str1 = "123456abcd789"
memset(str, 0, sizeof(str));
sscanf("123456abcd7