很久以前,我以为c没有自己的splitstring函数.后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了.
int sscanf(const char *buffer, const char *format,...);它的强大功能体现在对format的支持上.
我以前用他来分隔类似这样的字符串2006:03:18:
int a,b,c;
sscanf("2006:03:18:","%d:%d:%d",a,b,c);
sscanf("2006:03:18 - 2006:04:18","%s - %s",sztime1,sztime2);
但是后来,我需要处理2006:03:18-2006:04:18,仅仅是取消了'-'两边的空格,却打破了%s对字符串的界定..
再后来发现.format-type中有%[]这样的typef filed.如果读取的字符串.不是以空格来分隔的话,就可以使用%[].
%[]类似于一个正则表达式.[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z之外的所有字符.
所以这个问题就迎刃而解了sscanf("2006:03:18-2006:04:18","%[0-9,:]-%[0-9,:]",sztime1,sztime2);
再一次举例: iios/12ddwdff@122现在要获取/和@之间的字符
sscanf("iios/12ddwdff@122","%[%s]/%[%s]@%[],sztime1,sztime2);