//根据符号','分割字符串,例如:字符串"a,bbb,ccc"->数组[a,bbb,ccc] author:wangchangshuai jlu

char** splitFileNames(const char* strFileNames, int* count)

{

char** result = NULL, *strFileNamesCopy = NULL;

if ((strFileNamesCopy = (char*) myMalloc(strlen(strFileNames) + 1)) == NULL)

{

myLog("Malloc heap failed!\n");

return NULL;

}

strcpy(strFileNamesCopy, strFileNames);

char *p, *pre = strFileNamesCopy;

//统计符号','的个数,假设文件名的个数是符号','的个数+1

int i, supposeCount = 0, len = strlen(strFileNames);

for (i = 0; i < len; ++i)

{

if (strFileNames[i] == ',')

{

supposeCount++;

}

}

supposeCount += 1; //统计结束

if ((result = (char**) myMalloc(sizeof(char*) * supposeCount)) == NULL)

{

myLog("Malloc heap failed!\n");

return NULL;

}

//开始分割,同时统计实际文件名的个数

(*count) = 0;

for (i = 0; (p = strchr(strFileNamesCopy, SPLIT_FLAG)) != NULL; ++i)

{

if (pre == p)

{ //假如两个逗号之间没有字符串

*p = '\n';

pre = p + 1;

continue;

}

if ((result[*count] = (char*) myMalloc(p - pre + 1)) == NULL)

{

myLog("Malloc heap failed!\n");

return NULL;

}

memset(result[*count], 0, p - pre + 1);

memcpy(result[*count], pre, p - pre);

*p = '\n';

pre = p + 1;

++(*count);

}

if (*pre != '\0')

{ //假如最后一个逗号后面有字符串

if ((result[*count] = (char*) myMalloc(strlen(pre) + 1)) == NULL)

{

myLog("Malloc heap failed!\n");

return NULL;

}

memset(result[*count], 0, strlen(pre) + 1);

strcpy(result[*count], pre);

++(*count);

}

if (pre == strFileNamesCopy)

{ //假如没有找到符号“,”

if ((result[0] = (char*) myMalloc(strlen(strFileNamesCopy) + 1)) == NULL)

{

myLog("Malloc heap failed!\n");

return NULL;

}

memset(result[0], 0, strlen(strFileNamesCopy) + 1);

strcpy(result[0], strFileNamesCopy);

*count = 1;

}

myFree(strFileNamesCopy);

return result;

}

c语言数组取出特定字符串,C语言根据特定的符号分割字符串 如:字符串a,bbb,ccc-数组[a,bbb,ccc]...相关推荐

  1. c语言以空格分割字符串_C语言strtok()函数:用指定的分隔符分解字符串

    函数名: strtok 头文件: 函数原型: char *strtok(char *str1, const char *str2); 功能: 用指定的分隔符分解字符串 参数:   char *str1 ...

  2. c语言中二维数组中维数的计算,数组指针字符串C语言程序设计-第4章.ppt

    <数组指针字符串C语言程序设计-第4章.ppt>由会员分享,可在线阅读,更多相关<数组指针字符串C语言程序设计-第4章.ppt(132页珍藏版)>请在人人文库网上搜索. 1.程 ...

  3. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  4. c语言用一维数组求字符串,c语言一维数组练习题.doc

    c语言一维数组练习题 精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言一维数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的 ...

  5. android 数组赋值字符串_c语言中的字符数组与字符串

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

  6. c语言字符数组给字符指针,C语言常见有关问题之字符串数组和字符指针数组有关问题...

    C语言常见问题之字符串数组和字符指针数组问题 通过如下的实例来讲解这个问题: #include int main(void) { char a[3][4] = {"123", &q ...

  7. C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

    1. 题目 请编写一个函数function,它的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...

  8. c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc

    C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...

  9. 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句

    一.如何写C语言代码 1.编译器 2.创建项目 3.创建源文件 4.写代码 5.编译+链接+运行 项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径 C语言中,一般创建.c源文件, ...

最新文章

  1. C++派生类与基类构造函数调用次序
  2. GNU AWK中BEGIN/END使用举例
  3. 无聊的时候,冷死了(六)
  4. 2010年7月微软最有价值专家(MVP)当选名单
  5. 【剑指offer28:字符串的排列】【java】
  6. openstack 使用集锦
  7. 如何证明在素数p和2p之间存在另一个素数呢?简单却不完备的证明
  8. Go的协程与Swoole的协程的区别:环境支持 线程
  9. linux git 删除分支,git 删除分支和回滚的实例详解
  10. Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装
  11. exhaustion java_Java Player.setExhaustion方法代碼示例
  12. Word2Vec入门
  13. mysql备份的 三种方式
  14. java注释符_Java程序中的单行注释符是(  ),多行注释符是( )。
  15. unity3D汉化包Localization,我的软件是unity3D 2018.4.8c3亲测有效
  16. C# 实现虚拟打印机 HP Color LaserJet 4500 (3) PRN文件的显示
  17. 基于以太网为基础的POE供电温湿度变送器解决方案
  18. K-median 算法
  19. Win32学习笔记 - WndProc回调函数
  20. python基础之温度转换

热门文章

  1. dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
  2. Linux0基础深度解析shell简介01
  3. CeBIT 2017热点:从5G到AI和物联网
  4. 安装使用ubuntu和opensuse
  5. JSLint Error 之 Don't make functions within a loop
  6. Sharepoint 2007 用户信息管理总结(1) - 用户组和用户
  7. C# 调用Excel组件生成excel文件
  8. Python md5 sha1 的使用
  9. 【spark】Spark的介绍、安装以及配置相关介绍
  10. 【牛客网】——字符串的旋转