两个辅助指针变量, 挖 字符串
定义两个辅助指针变量, 挖 字符串

主调函数分配内存,被调函数分配内存:
char **p = NULL; //char buf[10][30]
p = (char **)malloc(10 * sizeof(char)); //char * array[10]
if(p == NULL)
{
return ;
}
for(i = 0; i <10; i++)
{
p[i] = (char *)malloc(30 * sizeof(char));
}
//free内存
for(i = 0; i < 10; i++)
{
free(p[i]);
}
free(p);
int spitString(const char *buf1, char c, char **myp, int *count);
int spitString( const char *buf1, char c,char buf2[10][30], int *count)
/*一个字符串特征为("abcdef,acccd,eeeeee,aaaaa,e3eeeee,ssssss,") 要求写一个函数(接口),输出以下结果 1)以逗号分割字符串,形成二维数组,并把结果传出; 2)把二维数组行数运算结果也传出 */ #include <stdio.h> #include <string.h> int spitString( const char *buf1, char c,char buf2[10][30], int *count) { const char *p = NULL, *pTmp = NULL; int tmpcount = 0; //1 p和ptmp初始化 p = buf1; pTmp = buf1; do { //检索符合条件的位置 p后移 形成差值 挖字符串 p = strchr(p, c); if(p != NULL) { if(p-pTmp > 0) { strncpy(buf2[tmpcount], pTmp, p-pTmp); buf2[tmpcount][p-pTmp] = '\0'; tmpcount++; //3 重新 让p和ptmp达到下一次检索的条件 pTmp = p = p + 1; } } else { break ; } }while(*p != '\0'); *count = tmpcount; return 0; } int main(void) { int ret = 0, i = 0; char *p1 = "abcdef,acccd,eeeeee,aaaaa,e3eeeee,ssssss,"; char cTmp = ','; int ncount; char myArray[10][30]; ret = spitString(p1, cTmp, myArray, &ncount); if(ret != 0) { printf("func spitString() err: %d \n", ret); return ret; } for(i = 0; i < ncount; i++) { printf("%s \n", myArray[i]); } return 0; }
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂
|
作者:Liu_Jing bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |

浙公网安备 33010602011771号