それで、
私はchar**を持っています。これは本質的に、その文のすべての単語へのポインタを持つ文です。すなわち
'h''i''\0''w''o''r''l''d''\0''y''a''y''!''\0'
この場合、さまざまな単語量と文字数の文を受け入れることができる関数を使用して、最後の char* (イェーイ!) を抽出しようとしています。何か案は?これまでのところ、同様のことを行ういくつかのライブラリ関数を見つけましたが、まさにこれを行うものはありません。
それで、
私はchar**を持っています。これは本質的に、その文のすべての単語へのポインタを持つ文です。すなわち
'h''i''\0''w''o''r''l''d''\0''y''a''y''!''\0'
この場合、さまざまな単語量と文字数の文を受け入れることができる関数を使用して、最後の char* (イェーイ!) を抽出しようとしています。何か案は?これまでのところ、同様のことを行ういくつかのライブラリ関数を見つけましたが、まさにこれを行うものはありません。
に値を割り当てるときchar **
、最後の単語をどのように追跡しますか? あなたの問題に対する答えはこれに依存しています。ターミナル値を使用できます。最後の単語の後のNULL
値を検索し、最終的な値を検索するstrlen
か、長さをsize_t
変数に格納するかstruct
、柔軟な配列メンバーを使用して (つまりstruct fubar { size_t size; char *word[]; }
、push_back
配列が大きくなるにつれてオブジェクト全体を再割り当てし、インクリメントする関数を使用してsize
) . これまでに作成したコードに関する詳細情報がなければ、これらのどれがあなたに当てはまるかを判断できません.
これには適切なデータ構造を使用してください。例えば:
struct sentence {
size_t word_count;
char** words;
};
そうすれば、常に O(1) 時間で最後の単語に到達できます。
struct sentence blah;
// ...
char* last_word = blah.words[blah.word_count - 1];