我有一个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 *分配并放入char **
答案 0 :(得分:1)
试试这个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] = ..;
希望有所帮助。
答案 1 :(得分:1)
假设您知道单词的数量,这是微不足道的:
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] = '\0';
t2 = text + 4;
texts[7] = '\0';
t3 = text[8];
*/
newtext[0] = t1;
newtext[1] = t2;
newtext[2] = t2;