浏览 6574 次
锁定老帖子 主题:c语言实现split函数
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-18
前段时间看到je上一个c++实现split函数,恰好项目需要写了一个c语言的split方法,欢迎大家提出意见,下面是代码 char** cSplit(char *string, char spliter) { //分割后字符串数量 int num = 0; //计算数量 int i = 0; int size = strlen(string); for(; i < size; i++) { // if((string[i] != spliter) && (string[i + 1] == spliter || string[i + 1] == '\0')) num++; } //分配空间 char **cStrings = (char**)malloc(sizeof(char*) * (num + 1)); int j = 0; for(; j <= num; j++) { //初始化指针数组 cStrings[j] = 0; } //保存分割后字符串 char *buffer = (char*)malloc(sizeof(char) * (size + 1)); int l = 0; for(; l < size + 1; l++) { buffer[l] = 0; } int counter = 0; int k = 0; for(; k < size; k++) { if(string[k] != spliter) { int i = 0; int j = k; while(string[j] != spliter && string[j] != '\0') { buffer[i++] = string[j++]; } buffer[i] = '\0'; cStrings[counter] = (char*)malloc(sizeof(char) * i); strcpy(cStrings[counter++],buffer); k = k + i; } } free(buffer); return cStrings; } /** *调用此方法释放cSplit分配的内存空间 */ void freeStringsMemory(char **strings) { // int k = 0; for(; ; k++) { // if(strings[k] != 0) free(strings[k]); else break; } free(strings); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-06-04
你可以直接翻翻java里源码的String类的split方法,然后改成C语言版的
|
|
返回顶楼 | |
发表时间:2011-04-07
为什么要自己实现?
C/C++里不是有strtok函数么? #include <string.h> char * strtok (char * str, const char * delimiters); |
|
返回顶楼 | |