C将字符数组拆分为数组数组

C将字符数组拆分为数组数组,c,arrays,pointers,char,C,Arrays,Pointers,Char,我如何转换 char* string = "test test test test"; 进入 如果数组的长度未知 如果允许您修改内存,则可以执行以下操作: #包括 #包括 #包括 char*get\u下一个开始(char*str、char-delim、int-terminate){ char*p; p=strchr(str,delim); 如果(p!=NULL){ 如果(终止){ /*只有nul在第二次传递时终止字符串*/ *p='\0'; } p+=1; } 返回p; } 内部主(空){ 字

我如何转换

char* string = "test test test test";
进入

如果数组的长度未知


如果允许您修改内存,则可以执行以下操作:

#包括
#包括
#包括
char*get\u下一个开始(char*str、char-delim、int-terminate){
char*p;
p=strchr(str,delim);
如果(p!=NULL){
如果(终止){
/*只有nul在第二次传递时终止字符串*/
*p='\0';
}
p+=1;
}
返回p;
}
内部主(空){
字符字符串[]=“测试”;
字符**字符串\u列表;
char*p;
尺寸i;
/*数一数元素*/
i=0;
for(p=string;p!=NULL;p=get\u next\u start(p',0)){
i+=1;
}
printf(“项目:%zd\n”,i);
/*给桌子留点内存*/
string_list=malloc(sizeof(string_list)*(i+1));
/*填充表格*/
i=0;
for(p=string;p!=NULL;p=get\u next\u start(p',,1)){
string_list[i]=p;/*存储下一项*/
i+=1;
}
string_list[i]=NULL;/*使用NULL终止列表*/
/*打印表格*/
对于(i=0;字符串列表[i]!=NULL;i++){
printf(“%3zd:[%s]\n”,i,字符串列表[i]);
}
/*释放内存*/
自由(字符串列表);
返回0;
}
注意
字符串的声明

  • charstring[]=“test”
    将数据放在堆栈上
  • char*string=“test”
    将数据放在只读内存中


如果不允许修改内存,并且只需要一次,那么可以使用
strndup()
复制字符串,并使用
realloc()
分配和调整表的大小。

使用
malloc
realloc
动态分配和重新分配?如果
[c]拆分字符串
作为此站点上的搜索条件没有提供有用的内容。
char*array=[“test”、“test”、“test”、“test”]
-->
char*数组[]={“test”、“test”、“test”、“test”、NULL}这不是数组的数组。指针不是数组。
char* array = ["test","test","test","test"];