按特定字符对字符串进行分割
今天师兄让我写一个函数是对字符串0,22,23,24,25,...按逗号进行分割,最后的返回结果为:name = 0 or name = 22 or name = 23 or name = 24 or name = 25(name需要自己传入)。在java里面直接用split就可以实现,但对C不太熟悉,我能想到的就是用strtok函数进行分割,于是写了如下代码
但被告知这样写不好,因为strtok用到了一个全局变量保存被分割的字符串,这样在多线程处理的时候可能会产生不正确的结果,所以在师兄的帮助下写了一个不用strtok的字符串切割函数:int getPageSql( const char *name, char *srcSql, char *desSql ) {if (NULL==name || '\0'==name[0] || NULL==srcSql || '\0'==srcSql[0] || NULL==desSql){return -1;}sprintf( desSql, "");char inSrcSql[10240] = {0};sprintf( inSrcSql, "%s", srcSql );char *start = inSrcSql;char *end = NULL;while( end = strchr( start, ',' ) ) {*end = '\0';/* 截断字符串 */sprintf( desSql, "%s%s=%s or ", desSql, name, start );start = end + 1;}sprintf( desSql, "%s%s=%s", desSql, name, start );return 0;}