首先是sscanf()函数的使用,sscanf()函数按我个人理解,主要是用来截取字符串,并且还可以提取出字符串中的数字,避免了自己写函数来提取数字的麻烦。下面给几个例子来看看sscanf函数的使用:
1)sscanf(“abcd”,”%s”,str); ———str的值为 “abcd\0”
2) sscanf(“123456″,”%3s”,str); ———str的值为 “123\0”
3) sscanf(“aaaAAA”,”%[a-z]”,str); ———str的值为 “aaa\0”
从这个实验开始我们会使用正则表达式,括号里面的a-z就是一个正则表达式,它可以表示从a到z的任意字符
补充:
%[ ] 的用法:%[ ]表示要读入一个字符集合, 如果[ 后面第一个字符是”^”,则表示反意思。
[ ]内的字符串可以是1或更多字符组成。空字符集(%[])是违反规定的,可
导致不可预知的结果。%[^]也是违反规定的。
%[a-z] 读取在 a-z 之间的字符串,如果不在此之前则停止,如
char s[]=”hello, my friend” ; // 注意: ,逗号在不 a-z之间
sscanf( s, “%[a-z]”, string ) ; // string=hello
%[^a-z] 读取不在 a-z 之间的字符串,如果碰到a-z之间的字符则停止,如
char s[]=”HELLOkitty” ; // 注意: ,逗号在不 a-z之间
sscanf( s, “%[^a-z]”, string ) ; // string=HELLO
%*[^=] 前面带 * 号表示不保存变量。跳过符合条件的字符串。
char s[]=”notepad=1.0.0.1001″ ;
char szfilename [32] = “” ;
int i = sscanf( s, “%*[^=]”, szfilename ) ; // szfilename=NULL,因为没保存
int i = sscanf( s, “%*[^=]=%s”, szfilename ) ; // szfilename=1.0.0.1001
%[^=] 读取字符串直到碰到’=’号,’^’后面可以带更多字符
4)字符串提取数字:
int a, b, c;
sscanf(“2006:03:18”, “%d:%d:%d”, &a, &b, &c); //a = 2006 b = 3 c = 18
5)字符串读入空格:
c语言的方法:
char text[29];
scanf(“%[^\n]”,text);
printf(“%s\n”,text);
c++方法:
string s;
getline(cin,s);
另一个值得一提的函数是strchr()函数:
函数原型:extern char *strchr(char *str,char character)
参数说明:str为一个字符串的指针,character为一个待查找字符
函数功能:从字符串str中寻找字符character第一次出现的位置
返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL
总而言之就是一个查找字符的函数。
欢迎访问无广告的个人主页:www.antelyle.com