---------------------------------------------------------------------------------------------
|读取文件时,一行一行读取,截取一段一段字符做法|用到正则表达式|
---------------------------------------------------------------------------------------------
//把源字符串"123456"拷贝到str的前6个字符,并且把str的第7个字符设为null字符,也就是/0
sscanf( "123456" , "%s" , str) ; ---------str的值为 "123456/0!!!"
---------------------------------------------------------------------------------------------
//sscanf只拷贝3个字符给str,然后把第4个字符设为null字符。
sscanf( "123456" , "%3s" , str) ; ---------str的值为 "123/0!!!!!!"
---------------------------------------------------------------------------------------------
//这个是过滤%* ,但好像只能过滤空格键即是\0;
char buf[1024];
char dataone[1024];
sscanf(buf,"%*s%s",dataone);
---------------------------------------------------------------------------------------------
//括号里面的a-z就是一个正则表达式,它可以表示从a到z的任意字符获取保存到str
sscanf( "aaaAAA" , "%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
//注意:符号^表示逻辑非。就是不是小写就拷贝,后面还在大写没拷贝只要因为当扫描到没有大写时结束
sscanf( "AAAaaaBBB" , "%[^a-z]" , str) ; ---------str的值为 "AAA/0!!!!!!"
---------------------------------------------------------------------------------------------
%*表示过滤 满足条件的字符,%*[A-Z]过滤了所有大写字母,同时%号不能出现两次以上
scanf( "AAAaaaBBB" , "%*[A-Z]%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
注意1:%只能使用一次,但%*可以使用多次,比如在这个实验里面,先用%*[A-Z]过滤大写字母,然后用%*[a-z]过滤小写字母。
注意2:^后面可以带多个条件,且这些条件都受^的作用,比如^a-z=表示^a-z且^=(既不是小写字母,也不是等于号)。
sscanf( "AAAaaaBC=" , "%*[A-Z]%*[a-z]%[^a-z=]" , str) ; ---------str的值为 "BC/0!!!!!!!"
---------------------------------------------------------------------------------------------
sscanf("iios/adfadfad@dddd","%*[^/]/%[^@]",buff); 成功!
%[]: 取指定字符集
%[^/]: 取到指定字符’/’为止的字符集
%*[^/]: 将取到指定字符’/’为止的字符集忽略
---------------------------------------------------------------------------------------------
strtok_s(在Windows) |strtok()用法|
---------------------------------------------------------------------------------------------
int in=0;
char buffer[]="Fred,John,Ann"
char *p[3];
char *buff = buffer;
while((p[in]=strtok(buf,","))!=NULL) {
i++;
buf=NULL; }
---------------------------------------------------------------------------------------------
|读取文件时,一行一行读取,截取一段一段字符做法|用到正则表达式|
---------------------------------------------------------------------------------------------
//把源字符串"123456"拷贝到str的前6个字符,并且把str的第7个字符设为null字符,也就是/0
sscanf( "123456" , "%s" , str) ; ---------str的值为 "123456/0!!!"
---------------------------------------------------------------------------------------------
//sscanf只拷贝3个字符给str,然后把第4个字符设为null字符。
sscanf( "123456" , "%3s" , str) ; ---------str的值为 "123/0!!!!!!"
---------------------------------------------------------------------------------------------
//这个是过滤%* ,但好像只能过滤空格键即是\0;
char buf[1024];
char dataone[1024];
sscanf(buf,"%*s%s",dataone);
---------------------------------------------------------------------------------------------
//括号里面的a-z就是一个正则表达式,它可以表示从a到z的任意字符获取保存到str
sscanf( "aaaAAA" , "%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
//注意:符号^表示逻辑非。就是不是小写就拷贝,后面还在大写没拷贝只要因为当扫描到没有大写时结束
sscanf( "AAAaaaBBB" , "%[^a-z]" , str) ; ---------str的值为 "AAA/0!!!!!!"
---------------------------------------------------------------------------------------------
%*表示过滤 满足条件的字符,%*[A-Z]过滤了所有大写字母,同时%号不能出现两次以上
scanf( "AAAaaaBBB" , "%*[A-Z]%[a-z]" , str) ; ---------str的值为 "aaa/0!!!!!!"
---------------------------------------------------------------------------------------------
注意1:%只能使用一次,但%*可以使用多次,比如在这个实验里面,先用%*[A-Z]过滤大写字母,然后用%*[a-z]过滤小写字母。
注意2:^后面可以带多个条件,且这些条件都受^的作用,比如^a-z=表示^a-z且^=(既不是小写字母,也不是等于号)。
sscanf( "AAAaaaBC=" , "%*[A-Z]%*[a-z]%[^a-z=]" , str) ; ---------str的值为 "BC/0!!!!!!!"
---------------------------------------------------------------------------------------------
sscanf("iios/adfadfad@dddd","%*[^/]/%[^@]",buff); 成功!
%[]: 取指定字符集
%[^/]: 取到指定字符’/’为止的字符集
%*[^/]: 将取到指定字符’/’为止的字符集忽略
---------------------------------------------------------------------------------------------
strtok_s(在Windows) |strtok()用法|
---------------------------------------------------------------------------------------------
int in=0;
char buffer[]="Fred,John,Ann"
char *p[3];
char *buff = buffer;
while((p[in]=strtok(buf,","))!=NULL) {
i++;
buf=NULL; }
---------------------------------------------------------------------------------------------