ページ 11

スペースを含む文を取り出したい

Posted: 2010年1月30日(土) 20:31
by かげろう
文字列の配列に、2つの英文が入っていて、
それを別々に取り出したいのです。
しかし英文ゆえに半角スペースがあり、sscanf関数ではうまくいきません。

例をあげます。
char str1[100] = "Thank you. You are welcome." ;
  char str2[100];
  char str3[100];

  sscanf(str1,"%s %s",str2,str3);
以上の結果、
str2が「Thank you.」
str3が「You're welcome.」
になってくれると嬉しいのですが、残念ながら
str2が「Thank」
str3が「you.」
になってしまうのです。

半角スペースがクセモノです。
どういった工夫を施せばよいでしょうか?

ちなみに、
char str1[100] = "Thank you._You are welcome." ;
  char str2[100];
  char str3[100];

  sscanf(str1,"%s_%s",str2,str3);
このようにアンダーバーをはさんでみましたが駄目でした。

Re:スペースを含む文を取り出したい

Posted: 2010年1月30日(土) 20:42
by mnkr
split関数はどうでしょうか?
・・・と調べたらCには無いのでstrtok関数を使うと良いみたいです。

参考URLをぺたり
http://networkprogramming.blog18.fc2.co ... ry-89.html

Re:スペースを含む文を取り出したい

Posted: 2010年1月30日(土) 20:51
by かげろう
こんな関数があったんですね…知りませんでした。
あとは自分で頑張ろうと思います。

ありがとうございました。

Re:スペースを含む文を取り出したい

Posted: 2010年1月30日(土) 21:34
by kazuoni
これは根本の解決ではない気がしますが・・・

英文を抜き出すという事ですよね?
どこで一つの英文とみなすかが分かりませんが、
ピリオド(.)で一文とするならば、
一文字づつ配列に出力していき、ピリオドが来たら終わりとする
とすれば、一応は題意を満たすと思うのですが・・・?