使用sscanf()截断字符串

时间:2015-11-06 06:31:25

标签: c scanf

如果我想获得" /"之间的子字符串; " @",这个将起作用:

char buf[512] ="" ;
char src[512] = "iios/12DDWDFF@122";

sscanf( src, "%*[^/]/%[^@]", buf);
printf("%s\n", buf);          //buf will be "12DDWDFF"  

如何从" // ^&#@ iios //// 12DDWDFF @@@@ 122 /& * @(@ ///&#34 ;;

char buf2[512] ="" ;
char src[512] = "//^&#@iios////12DDWDFF@@@@122/&*@(@///";

sscanf(src, "%*[4][^/]/%[4][^@]", buf2);
printf("%s\n", buf2);         //buf2 gets nothing

sscanf(src, "%*[^////]/////%[^@@@@]", buf2);
printf("%s\n", buf2);         //buf2 gets nothing

1 个答案:

答案 0 :(得分:4)

您可以按如下方式编写sscanf声明 -

if(sscanf(src,"%*[^0-9]%[^@]",buf2)==1)
 {
     //do something
 }

%*[^0-9]会一直读到,直到遇到号码然后丢弃它,%[^@]会在buf2之前读到@

Demo