使用 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
直到遇到@
。
如果我想得到“/”“@”之间的子串,这个可以工作:
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
直到遇到@
。