70,023
社区成员




//定义
int strsplt(const char* const src, char** const pArr, char cDelim)
{
char * pcStart = *pArr;
int count = 0;
for (int i = 0; i < strlen(src); i++)
if ( src[i] != cDelim ) // found start
{
for (int j = i+1; j <= strlen(src); j++)
if (src[j] == cDelim || src[j] == '\0') // found end, copy
{
strncpy(pcStart,&src[i],j-i);
pcStart[j] = '\0';
count++;
pcStart += j-i+1;
i = j;
break;
}
}
return count;
}
//调用
const char * src = "test1|test2|test3";
char * arr = (char*)malloc(strlen(src)+1);
char * b = arr;
memset(arr,0,strlen(src)+1);
int a = strsplt(src, &arr,'|');
printf("%d\n",a);
printf("%s\n",arr);
printf("%s\n",arr+=strlen(arr)+1);
printf("%s\n",arr+=strlen(arr)+1);
printf("%s\n",arr+=strlen(arr)+1);
free(b);
int strsplt(const char* const src, char** const pArr, char cDelim)
{
char * pcStart = *pArr;
int count = 0;
for (int i = 0; src[i]; i++)
if ( src[i] != cDelim ) // found start
{
int j = i+1;
while (true){
if (src[j] == cDelim || src[j] == '\0') // found end, copy
{
memcpy(pcStart,&src[i],j-i);
pcStart[j-i] = '\0';
count++;
pcStart += j-i+1;
i = j;
break;
}
j++;
}
}
return count;
}
int strsplt(const char* const src, char** const pArr, char cDelim)
{
char * pcStart = *pArr;
int count = 0;
for (int i = 0; src[i]; i++)
if ( src[i] != cDelim ) // found start
{
for (int j = i+1; src[j]; j++)
if (src[j] == cDelim || src[j] == '\0') // found end, copy
{
strncpy(pcStart,&src[i],j-i);
pcStart[j-i+1] = '\0';
count++;
pcStart += j-i+1;
i = j;
break;
}
}
return count;
}
const char * src = "||test1||||test2|test3|";
char * arr = (char*)malloc(strlen(src)+1); // 这个free会出错
char * arr = (char*)malloc(strlen(src)+2); // 这个free没问题