単語数と単語の最大長がわからない場合に、char** にメモリを割り当てる方法に興味があります。複数のトークン (単語) で文字列 (char* として取得) を分割し、個別の単語を char** に保存する必要があります。*char のサイズを (文字列の長さ + 1) として割り当てることができ、各 char[i] に対しても (文字列の長さ + 1) を割り当てることができることを理解しています。文字列内の各文字を個別の単語として。したがって、コードは次のようになると思います。
char **words = malloc((strlen(str)+1) * sizeof(char*));
int i;
for( i=0; i < strlen(str)+1; i++)
words[i] = malloc((strlen(str)+1) * sizeof(char));
それが正しいか?より効率的であれば、私はできますか?