使用 sscanf() 截断字符串

Use sscanf() to truncate string

如果我想得到“/”“@”之间的子串,这个可以工作:

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

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

如何从“//^&#@iios////12DDWDFF@@@@122/&*@(@///”;

得到相同的结果
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

你可以这样写你的sscanf语句-

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

%*[^0-9]会读到遇到数字然后丢弃,%[^@]会读到buf2直到遇到@

Demo