我有一个长字符串的字符*,我想创建一个指向指针(或指针数组(的指针。char ** 是使用分配的正确内存设置的,我正在尝试将原始字符串中的每个单词解析为 char * 并将其放在 char ** 中。
例如 char * text = "fus roh dah
char **newtext = (...size allocated)
所以我想要:
char * t1 = "fus", t2 = "roh", t3 = "dah";
newtext[0] = t1;
newtext[1] = t2;
newtext[2] = t3;
我已经尝试将原始内容分解并为"\0"制作空格,但我仍然无法分配字符*并将其放入字符**
假设你知道字数,这是微不足道的:
char **newtext = malloc(3 * sizeof(char *)); // allocation for 3 char *
// Don't: char * pointing to non modifiable string litterals
// char * t1 = "fus", t2 = "roh", t3 = "dah";
char t1[] = "fus", t2[] = "roh", t3[] = "dah"; // create non const arrays
/* Alternatively
char text[] = "fus roh dah"; // ok non const char array
char *t1, *t2, *t3;
t1 = text;
text[3] = ' ';
t2 = text + 4;
texts[7] = ' ';
t3 = text[8];
*/
newtext[0] = t1;
newtext[1] = t2;
newtext[2] = t2;
试试这个char *newtext[n];
。这里n
是一个常数,如果事先知道n
,请使用它。
否则char **newtext = malloc(n * sizeof *newtext);
这里n
是一个变量。
现在,您可以分配char*
,如示例中所示:
newtext[0] = t1;
newtext[1] = t2;
newtext[2] = t3;
...
newtext[n-1] = ..;
希望有帮助。