现在的位置: 首页 > 综合 > 正文

C语言字符串操作汇总

2018年07月30日 ⁄ 综合 ⁄ 共 1198字 ⁄ 字号 评论关闭

 

//1#2#3#4#5#....  //sign = '#'
int mxGetNums (char*data ,char sign)
{
 int nums = 0;
 
 char* sp = data;
 
 while (1)
 {
  char *temp = strchr(sp, sign);
  if (temp == NULL) {
   break;
  }
  sp = temp+1;
  nums++;
 }
 return nums;
}

char* mxDeleteAtIndex(char*data ,int index ,char sign)
{
 
 int nums = 0;
 char* sp = data;
 
 while (index != 0)
 {
  char *temp = strchr(sp, sign);
  if (temp == NULL) {
   return NULL;
  }
  sp = temp+1;
  nums++;
  if (nums == index) {
   break;
  }   
 }
 char *ep = strchr(sp, sign);
 if (ep == NULL)  return NULL; 

 int datalen = strlen(data);
 int lastlen = ep - data + 1;

 if (datalen == lastlen)
 {
  return NULL;//最后一个不需要删除了。
 }

 char *newData = (char*)malloc(strlen(data));
 memset(newData,0,strlen(data));

 int frontlen = sp - data;

 memcpy( newData,data,frontlen );//前面index个,带sign符号

 //int afterLen = ep
 strcpy( newData + strlen(newData),ep+1 );
 
 return newData;       
}

char* mxGetAtIndex(char*data ,int index ,char sign)
{

 
 int nums = 0;
 char* sp = data;
 
 while (index != 0)
 {
  char *temp = strchr(sp, sign);
  if (temp == NULL) {
   return NULL;
  }
  sp = temp+1;
  nums++;
  if (nums == index) {
   break;
  }   
 }
 char *ep = strchr(sp, sign);
 if (ep == NULL)  return NULL;
 
 int len = ep - sp;
 if (len <= 1) return NULL;
 
 char *returndata = (char*)malloc(len+1);
 memset(returndata, 0, len+1);
 
 memcpy(returndata, sp,len);
 
 return returndata;       

 
}

 

【上篇】
【下篇】

抱歉!评论已关闭.