C提高_day03_两个辅助指针变量挖字符串(强化4)
生活随笔
收集整理的這篇文章主要介紹了
C提高_day03_两个辅助指针变量挖字符串(强化4)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>//兩個輔助指針變量挖字符串, 的第三種內存模型//指針做函數參數void FreeMem(char **myp,int count) //釋放內存函數
{int i=0;if(myp == NULL){return;}for(i=0;i<count;i++){if(myp[i] != NULL){free(myp[i]);}}if(myp != NULL){free(myp);}
}int spitString4(char *buf1,char c,char ***myp3,int *count) //**pp二級指針做輸入
{int ret =0;char *p=NULL, *pTmp = NULL;int tmpcount = 0;int len;char **myp=NULL;//1 p和ptmp初始化p = buf1;pTmp = buf1;//第一遍求出countdo{//2 檢索符合條件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){tmpcount ++;//3重新 讓p和ptmp達到下一次檢索的條件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');*count = tmpcount;//根據多少行精確分配內存myp=(char **)malloc(tmpcount * sizeof(char *));if(myp==NULL){ret=-1;printf("func spitSpring4() err :%d malloc(tmpcount * sizeof(char *))",ret);goto END;//return -1;
}/
tmpcount=0;//1 p和ptmp初始化p = buf1;pTmp = buf1;do{//2 檢索符合條件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){len=p-pTmp+1;myp[tmpcount]=(char *)malloc(len * sizeof(char));if(myp==NULL){//return -1;ret=-1;printf("func spitSpring4() err :%d malloc(tmpcount * sizeof(char *))",ret);goto END;}strncpy(myp[tmpcount],pTmp,p-pTmp);myp[tmpcount][p-pTmp]='\0';tmpcount ++;//3重新 讓p和ptmp達到下一次檢索的條件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');END:if(ret != 0) //失敗
{FreeMem(myp,*count);}else{ *myp3 = myp; //成功
} return ret;}int main()
{int i;int ret=0 ;char *p1="abcdef,aaa,eeeee,ffffff,a3a3a3,";char tmp=',';char **p=NULL;int nCount;ret=spitString4(p1,tmp,&p,&nCount);if(ret!=0){printf("fun spiltString() err:%d \n",ret);return ret;}for(i=0;i<nCount;i++){printf("%s \n",p[i]);}for(i=0;i<nCount;i++){free(p[i]);}free(p);printf("%d \n",nCount);printf("hello...\n");system("pause");}
轉載于:https://www.cnblogs.com/zhesun/p/5008463.html
總結
以上是生活随笔為你收集整理的C提高_day03_两个辅助指针变量挖字符串(强化4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大话设计模式学习心得2
- 下一篇: Eclipse不给提示no defaul