c语言数组取出特定字符串,C语言根据特定的符号分割字符串 如:字符串a,bbb,ccc-数组[a,bbb,ccc]...
//根据符号','分割字符串,例如:字符串"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]...相关推荐
- c语言以空格分割字符串_C语言strtok()函数:用指定的分隔符分解字符串
函数名: strtok 头文件: 函数原型: char *strtok(char *str1, const char *str2); 功能: 用指定的分隔符分解字符串 参数: char *str1 ...
- c语言中二维数组中维数的计算,数组指针字符串C语言程序设计-第4章.ppt
<数组指针字符串C语言程序设计-第4章.ppt>由会员分享,可在线阅读,更多相关<数组指针字符串C语言程序设计-第4章.ppt(132页珍藏版)>请在人人文库网上搜索. 1.程 ...
- C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中
例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...
- c语言用一维数组求字符串,c语言一维数组练习题.doc
c语言一维数组练习题 精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言一维数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的 ...
- android 数组赋值字符串_c语言中的字符数组与字符串
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
- c语言字符数组给字符指针,C语言常见有关问题之字符串数组和字符指针数组有关问题...
C语言常见问题之字符串数组和字符指针数组问题 通过如下的实例来讲解这个问题: #include int main(void) { char a[3][4] = {"123", &q ...
- C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
1. 题目 请编写一个函数function,它的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...
- c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc
C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...
- 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句
一.如何写C语言代码 1.编译器 2.创建项目 3.创建源文件 4.写代码 5.编译+链接+运行 项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径 C语言中,一般创建.c源文件, ...
最新文章
- C++派生类与基类构造函数调用次序
- GNU AWK中BEGIN/END使用举例
- 无聊的时候,冷死了(六)
- 2010年7月微软最有价值专家(MVP)当选名单
- 【剑指offer28:字符串的排列】【java】
- openstack 使用集锦
- 如何证明在素数p和2p之间存在另一个素数呢?简单却不完备的证明
- Go的协程与Swoole的协程的区别:环境支持 线程
- linux git 删除分支,git 删除分支和回滚的实例详解
- Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装
- exhaustion java_Java Player.setExhaustion方法代碼示例
- Word2Vec入门
- mysql备份的 三种方式
- java注释符_Java程序中的单行注释符是( ),多行注释符是( )。
- unity3D汉化包Localization,我的软件是unity3D 2018.4.8c3亲测有效
- C# 实现虚拟打印机 HP Color LaserJet 4500 (3) PRN文件的显示
- 基于以太网为基础的POE供电温湿度变送器解决方案
- K-median 算法
- Win32学习笔记 - WndProc回调函数
- python基础之温度转换