sscanf详解

xiaoxiao2021-02-28  21

1.头文件:#include<stdio.h>

2. 定义函数 int sscanf (const char *str,const char * format,........);

3.函数说明:

sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。

4.用途:一个字符串中读进与指定格式相符的数据。字符串操作是平常用途之多,截取,追加等等。也经常从文件中读取一行,取出所需要的字符串。基本有些是固定格式的。都可以用sscanf来得到。

其实就是format格式化字符串。下面就是经常用的小例子,练习一遍就能够十分熟悉使用了。对于广大网友来说还是非常有帮助性。

5实例:编译器vs2015

// 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

转载请注明原文地址: https://www.6miu.com/read-1534232.html

最新回复(0)