要求:分割后字符串多少不知道,所以我想需要一个不定长的,足以能够保存分割后字符串的。 遇到的问题有:二次指针的内存分配问题 解决: char **ch=(char **)malloc(sizeof(char *)*sizeof(s)); 解决代码: #include<string.h> #include<stdio.h> #include<stdlib.h> void main(){ char s[]=" ab-cd:ef;gh:i-jkl;mnop;qrs-tu:vwx-y;z"; char *delim=" -:"; char *p; //分配空间 char **ch=(char **)malloc(sizeof(char *)*sizeof(s)); p = strtok(s, delim); //为每个字符串再分配空间。 ch[0] = (char*)malloc(strlen(p)+1); //memset(ch[0], 0x00, sizeof(&p)); //把分割后的字符串保存到字符串指针里面去。 strcpy(ch[0], p); printf("%s ",p); int i = 1; while((p=strtok(NULL,delim))){ ch[i] = (char*)malloc(strlen(p)+1); //memset(ch[i], 0x00, sizeof(p)); strcpy(ch[i], p); i++; printf("%s ",p); } printf("/n"); } 其实这里面还涉及到,内存释放问题。大家注意罗。