C语言 如何将 char * 字符串转换为指向指针数组的指针,并将指针值分配给每个索引



我有一个长字符串的字符*,我想创建一个指向指针(或指针数组(的指针。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] = ..;

希望有帮助。

相关内容

  • 没有找到相关文章

最新更新