sscanf函数类似于scanf,都是作为输入用,但是scanf以stdin作为输入源,前者可以自定义。
sscanf函数用处很多,下面说明下具体用法:
1.提取字符串
sscanf("hello","%s",str);
这样str就得到了hello字符串。
2.提取指定长度的字符串
sscanf("hello world","%5s",str);
str只取前面5个字节的字符串,即hello
3.取到指定字符为止
sscanf("hello world","%[^w]",str);
str只取到w之前的字符串,即str为hello 。
4.取仅包含指定字符的字符串
sscanf("hello world 12345 CDO","[a-z1-9]",str);
str只取数字和小写字母
5.取到指定字符集为止
sscanf("hello ABCDE","[^A-Z]",str);
str只包含大写字母
很实用的函数
小例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[100]="LEDNO=1&STATUS=ON&S",tmp[25];
int i=0;
printf("str length=%d\n",strlen(str));
sscanf(str,"%[^&]",tmp);//遇到&就结束,只保存&之前的数据
while(str[i]!='\0') {
str[i]=str[i+strlen(tmp)+1];
i++;
}
i=0;
printf("new str:%s\n",str);
printf("%s,length=%d",tmp,strlen(tmp));
return 0;
}
运行结果:
另外一种写法(是为了验证字符串的原因):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[100]="LEDNO=1&STATUS=ON&s",tmp[25],tmp2[25];
int i=0,length;
printf("str length=%d\n",strlen(str));
sscanf(str,"%[^&]",tmp);//遇到&就结束,只保存&之前的数据
while(str[i+strlen(tmp)+1]!='\0') {
tmp2[i]=str[i+strlen(tmp)+1];
i++;
}
length = i;
tmp2[length]='\0';
i=0;
printf("new str:%s,ilength=%d,strlength=%d\n",tmp2,length,strlen(tmp2));
printf("%s,length=%d",tmp,strlen(tmp));
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。