我是C的新手,我有一个代码,但我不理解其中的一部分。
typedef struct
{
size_t count;
char** strings;
} Tokens;
Tokens Tokenize(char* String, char Split)
{
Tokens t;
t.count = 1;
for (size_t i = 0; String[i] != 0; i++)
{
if (String[i] == Split)
t.count++;
}
t.strings =(char**) malloc(sizeof(char*)* t.count);
if (t.count > 0)
t.strings[0] = String;
for (size_t i = 0, j = 1; String[i] != 0; i++)
{
if (String[i] == Split)
{
t.strings[j] = &String[i + 1];
String[i] = 0;
j++;
i++;
}
}
return t;
}
我不理解的部分是指针char的指针如何标记字符串部分,特别是那行t.strings [j] =& String [i + 1];
如果有人能够对流程进行可视化,我将不胜感激。 感谢
答案 0 :(得分:1)
特别是那行t.strings [j] =& String [i + 1];
在该行中,String[i]
是找到的分隔符char(Split
),因此String[i + 1]
是下一个标记字符串开头的char。然后,该char(&String[i + 1]
)的地址是下一个标记字符串的字符串指针/地址。
t.strings[]
只是String
中可以找到的字符串指针的集合(数组)。