我有这样的字符串:
"monday,wednesday,friday"
而且我想将其保存到char数组(〜字符串数组)中。
char **splitString(char *string, int size, char delimiter)
{
char **ptr = (char **)malloc(size * sizeof(char *));
int i = 0;
ptr[i] = strtok(string, &delimiter);
while (ptr[i] != NULL)
{
ptr[++i] = strtok(NULL, &delimiter);
}
return ptr;
}
可以通过上面的代码来做到这一点,但是由于它总是检查当前标记化的字符串,因此它不会随着最后一个字符串而停止并读取附加的NULL
。打印出我得到的数组:
The 0. element is: monday
The 1. element is: wednesday
The 2. element is: friday
The 3. element is: (null)
是否有一种简洁明了的方法来知道循环何时到达最后一个元素?
使用类似的东西
char **splitString(char *string, int size, char delimiter)
{
char **ptr = (char **)malloc(size * sizeof(char *));
char *p;
int i = 0;
p = strtok(string, &delimiter);
while (p != NULL)
{
ptr[i++] = p;
p = strtok(NULL, &delimiter);
}
return ptr;
}