0

それで、

私はchar**を持っています。これは本質的に、その文のすべての単語へのポインタを持つ文です。すなわち

'h''i''\0''w''o''r''l''d''\0''y''a''y''!''\0'

この場合、さまざまな単語量と文字数の文を受け入れることができる関数を使用して、最後の char* (イェーイ!) を抽出しようとしています。何か案は?これまでのところ、同様のことを行ういくつかのライブラリ関数を見つけましたが、まさにこれを行うものはありません。

4

2 に答える 2

3

に値を割り当てるときchar **、最後の単語をどのように追跡しますか? あなたの問題に対する答えはこれに依存しています。ターミナル値を使用できます。最後の単語の後のNULL値を検索し、最終的な値を検索するstrlenか、長さをsize_t変数に格納するかstruct、柔軟な配列メンバーを使用して (つまりstruct fubar { size_t size; char *word[]; }push_back配列が大きくなるにつれてオブジェクト全体を再割り当てし、インクリメントする関数を使用してsize) . これまでに作成したコードに関する詳細情報がなければ、これらのどれがあなたに当てはまるかを判断できません.

于 2013-02-19T01:56:31.990 に答える
0

これには適切なデータ構造を使用してください。例えば:

struct sentence {
    size_t word_count;
    char** words;
};

そうすれば、常に O(1) 時間で最後の単語に到達できます。

struct sentence blah;
// ...
char* last_word = blah.words[blah.word_count - 1];
于 2013-02-19T02:02:13.983 に答える