文字列をベクトルに変換しようとしています。私のコードは次のとおりです。
char **my_str2vect(char *str)
{
char** vect;
char* temp;
int num_whitespaces = 0;
temp = str;
for(; *temp!= '\0'; temp++)
{
if(*temp == ' ')
{
num_whitespaces++;
}
}
vect = (char **)malloc((num_whitespaces+1)*sizeof(char *));
*vect = str;
for(; *str != '\0'; str++)
{
if(*str == ' ')
{
*str = '\0';
*vect = ++str;
vect++;
}
}
*vect = NULL;
return vect;
}
残念ながら、セグメンテーション違反が発生しています。次のコードを使用して関数を呼び出します。
n = read(0, buffer, MAX-1);
buffer[MAX] = '\0';
if(n >= 0)
{
vect = my_str2vect(buffer);
}