C++、C常见字符串处理(提取数字,输入空格)

首先是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

你可能感兴趣的:(C++、C常见字符串处理(提取数字,输入空格))