- 814 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:32:59 ]
- >>812
strtokは、与えた文字列(この場合s)の中を書き換えながら、そこを指すポインタを直接返す。 たとえば、"This is a pen" を与えると、strtokは最初 "This\0is a pen" ↑ ここを返す。文字列は\0で終わる決まりなので、"This"が得られる。2回目は "This\0is\0a pen" ↑ ここを返す。"is"が得られる。3回目は "This\0is\0a\0pen" ↑ ここを返す。"a"が得られる。 こういう動作なので、帰ってきた文字列に直接strcatで追加すると、 後ろの文字列(=次に返される文字列)が書き換わってしまう。 つまり、そのprintLatinWordを実行すると、sの中は "ThisTay\0a pen" のように書き換わり、次にstrtokが返すはずだった "is" は "ay" になってしまう。
|

|