2回目のwhileループでは、データが追加されていることを確認しましたが、lenがインクリメントされた後でも、どのような文字列[walker + * len]がNUL( '\ 0'ここで何がエラーですか?文字列配列が値を読み取っていませんか?
char* getWord(char* string, short* len)
{
size_t walker = 0;
/*POINT TO THE FIRST CHAR*/
while (string[walker] == ' ' || string[walker] == '\0')
++walker;
while (string[walker + *len] != ' ' || string[walker + *len] != '\0' )
++(*len);
return (&string[walker]);
コードがもっと必要ですが、どのように関数を呼び出すのですか? – knittl
あなたのコードの問題は、呼び出し元と呼び出し先の間の明示的な契約にあります。具体的には、誰が '* len'を初期化する責任がありますか?あなたが発信者のコードを提供していないので、私たちは何が起こっているのか推測しています。このような推測を避けるために、最小限の完全でコンパイル可能なサンプルプログラムを提供してください。このようなプログラムの作成方法と利点については、http://sscce.org/を参照してください。 –
'' ''のような文字列を渡すと、最初のループは壊れます。なぜなら、文字列の終わりを超えて読み込まれ、空白でないnull以外のバイトが見つかるまでです。これはあなたが意図したものではありそうもありません。 2番目のループでは、 'len'にどのような値があるのか分からないので、' walker + * len'でインデックスを作成するのが安全かどうかはわかりません。おそらく、* len = 0;を2番目のループの前に設定しようとしたでしょう。第2のループ条件も壊れている。 'string [walker + * len] == '''ならば、2番目の条件は真です。それ以外の場合は最初のコードなので、コードがクラッシュするはずです。 '||' vs '&&'と否定的な条件に注意してください。 –