sscanf()函数是我比较喜欢用的C语言字符串处理函数。
它的原型 百度百科 写道
sscanf() - 从一个字符串中读进与指定格式相符的数据.
函数原型:
int sscanf( const char *, const char *, ...);
int sscanf(const char *buffer,const char *format,[argument ]...);
buffer 存储的数据
format 格式控制字符串
argument 选择性设定字符串
sscanf会从buffer里读进数据,依照argument的设定将数据写回。
它的返回值 百度百科 写道
成功则返回参数数目,失败则返回0,错误原因存于errno中。
这里我要解释一句,成功返回的是匹配的数量(如"%[0-9]%[^a]",这个规则都满足,则返回2);失败则返回0;还有一种情况,当字符串到尾(即遇到'\0')时,返回-1!
我们可以自己定义一个指定长度的字符数组,将数组首地址传入该函数中,用于接收匹配字符串:
#include <stdio.h>
#include <string.h>
int main()
{
char temp[100] = {0};
char str[100] = {0};
int i = 0;
i = strlen(str);
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = 'd';
str[4] = 'e';
str[5] = 'f';
i = sscanf(str, "%s", temp);
printf("sscanf():\t%d\n",i);
puts(temp);
str[0] = 'g';
str[1] = 'u';
i = sscanf(str, "%[^c]", temp); //注意!!这里不需要将temp中每个元素情况,事实上sscanf()函数会在匹配完成后,在字符串最后自动加一个'\0',用于结束。
printf("sscanf():\t%d\n",i);
puts(temp);
printf("char\tvalue\n");
for(i=0; i<10; i++)
{
printf(" %c \t %d\n",temp[i],temp[i]);
}
getchar();
return 0;
}
最后,程序运行结果为:
sscanf(): 1
abcdef
sscanf(): 1
gu
char value
g 103
u 117
0
d 100
e 101
f 102
0
0
0
0
可以看到定义的长度为100的temp字符数组,在第一次匹配之后并没有清空,而继续调用ssacnf()使用,会自动将'\0'添加在最后,虽然之后的字符依然存在,但是字符串以可以区分开来。
分享到:
相关推荐
C语言或者C++ 中的sscanf的一些操作练习进行详解,一般用来分割字符串; 如固定格式的ch = "\"aa bb cc\" \"dd ff gg\"";
sscanf函数的高级用法 sscanf函数的高级用法 sscanf函数的高级用法 sscanf函数的高级用法
详解C++中十六进制字符串转数字(数值) 主要有两个方法,其实都是对现有函数的使用: 方法1: sscanf() 函数名: sscanf 功 能: 从字符串格式化输入 用 法: int sscanf(char *string, char *format[,...
详细介绍sscanf函数的用法, 一看必然会用。。。。。。。
sscanf函数的用法[定义].pdf
sscanf函数的高级用法,非常好的资料,由KLC搜集整理,不敢独享,大家都来下载吧
sscanf函数.pdf
----- 请注意:有很多方法可以通过直接应用一个或多个内置的 Matlab 字符串处理函数来获得类似的结果。 这里的好信息: http : //blogs.mathworks.com/loren/2006/12/20/finding-strings/ 在这里: http :
sscanf函数的用法.pdf
重要知识sscanf函数.pdf
计算机sscanf函数的用法.pdf
该函数根据参数format(格式化字符串)来转换参数str指向的字符串,转换后的结果存于对应的可变参数内。其返回值为按照指定格式转换符成功读入且赋值的可变参数数目(若发生匹配错误而部分成功,该数目会小于指定的...
将混合有字符串和数据的文件,在matlab中读取,提取数据信息。 运用脚本,适合批量读取,而非手动插入数据。
sscanf函数的用法[文].pdf
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: #include sscanf()函数用于从字符串中读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, ...]); 【参数】...
很多初学者可能没用过或者很少用这个函数把,其实功能很强大的哦,现在处理各种字符串都用它,呵呵
8 字符串与字符数组 39 8.1 字符数组定义 39 8.2 字符数组初始化 39 8.3 字符数组使用 40 8.4 随机数产生函数RAND与SRAND 40 8.5 用SCANF输入字符串 40 8.6 字符串的结束标志 41 8.7 字符串处理函数 41 8.7.1 gets ...