C语言有没有把字符串拆分为数组的函数?

Python014

C语言有没有把字符串拆分为数组的函数?,第1张

用strtok函数实现吧。

void split( char **arr, char *str, const char *del)//字符分割函数的简单定义和实现

{

char *s =NULL

s=strtok(str,del)

while(s != NULL)

{

*arr++ = s

s = strtok(NULL,del)

}

}

int main()

{

int i

char *myArray[4]

char s[] = "张三$|男$|济南$|大专学历$|"

memset(myArray, 0x0, sizeof(myArray))

split(myArray, s, "$|")

for (i=0i<4i++)

{

printf("%s\n", myArray[i])

}

return 0

}

如果是从输入读,那不用存字符串,直接存数组就好了比如scanf(“%d,%d....”,a,a+1,a+2...)如果已经是字符串了,比如str,那么用sscanf比如sscanf(str,“%d,%d....”,a,a+1,a+2...)

void * Split(const  char * pString ,int length)

{

 char * ptr=NULL

 int rows//一组等宽字符串可以看做二维数组的一行,定义行数

 const char *pSrc=pString//取原地址作为源指针

 char *pTag//目标指针

 //分割长度小于等于0,或指针无效时,返回空指针。

 if (pString && length>0 )

 {

  int len=strlen(pString)

  int cols//列数

  rows=len/length//字符串总长除以列数

  if (len%length>0)rows++//如果余数非0,则行数加一

  ptr=new char[rows*(length+1)]//创建足够的空间

  pTag=ptr//初始化目标指针

  while (*pSrc!='\0')//源指针指向的值如果有效则循环

  {

   cols=strlen(pSrc)//取原指针开始的字符串长度

   if (cols>length)cols=length//如果大于分割长度则修正,否则即为余数,就是最后一行的列数

   memcpy(pTag,pSrc,cols)//复制

   pTag+=length//目标指针递增一个列宽(行宽度)

   *pTag='\0'//填写结束符

   pTag++//增补一个地址

   pSrc+=cols//源指针递增一个列宽(行宽度)

  }

 }

 return ptr

}

//主函数 

int _tmain(int argc, _TCHAR* argv[])

{

 char *str="abcdefghijklmn"

 char (*p)[4]

 p=(char (*)[4])Split(str,3)

 cout<<p[1]<<endl

getchar()

 return 0

}