求助,sscanf分解字符串.
现在有一字符串,例如: /var/test , file , 2007 , yes
想要用sscanf函数一次将这字符串以逗号为分隔符,并且同时把分隔开的每个字符串(一共有四个)两边的空格和制表符也一并去掉.不知道是不是可行. 目前本人只能先用sscanf分割到两边还有空格和制表符,再用sscanf将各个子字符串两边字符去掉.
附自己的sscanf:
rc = sscanf(str, "%[^,],%s[^,],%s[^,],%s[^,],%[^\n] ", str1,str2,str3,str4,str5);
[解决办法]
试试strtok.
/*in: char * str; out: char **res */
char sep[] = " ,\t ";
p = _tcstok( szBuf, sep ) ;
while( p ) {
strcpy( res++, p ) ;
p = _tcstok( NULL, sep ) ;
}
[解决办法]
建议用strtok或者判断每个字符
sscanf的正则只能简单判断字符集,
用 "%[ ,\t]%s%[ ,\t]%s%[ ,\t] "(还要判断第一个是否分割符)或者 "%s%s%s%s "
[解决办法]
sscanf不能用逗号分解字符串,因为逗号是字符串的一部分
[解决办法]
sscanf的分解符是空格 TAB 回车
或者学习正则