• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの改良)

プログラムの改良方法

このQ&Aのポイント
  • プログラムの改良方法について教えてください。
  • 現在、文章を単語毎に分割するプログラムを作成していますが、スペースが余計に入ってしまう問題があります。
  • スペースの余計な挿入を回避するための改良方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

スペースが連続した場合をフラグで判断するサンプル。 (1)フラグ変数の宣言int sp=0; を追加 (2)if文 を変更 if ( (key==' ' && sp==0) || key == '.' || key == ',' || key == '!' || key == '?' || key == '"' || key == 0x0a || key == 0x0d ){ (3)len++;の前に、フラグセット&クリア追加 sp= (key== ' ')?1:0;

yosudesu
質問者

補足

大変参考になりました。 サンプルプログラムを追加しI□am□□a□□□boy□□.とスペースが余計に入ってしまってる文章を実行したところIとamと□aと□□boyと□と.になってしまいます。 これを□と.と分割せずに実行結果を□.としたいのですがどうすればよいでしょうか? 区切り符号を表示させる if( key=='.' || key== '!' || key=='?' || key=='"'){ のif文中の.や!の前にスペースがある場合上手くいかないようなのです。□□!や□□□? お時間ありましたら補足部分も御願い頂けませんでしょうか。

その他の回答 (4)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

単語の切り分けのifで、 「文字列strに1文字以上格納されていて、1つ前の文字が\0じゃなかったら」という条件を追加してあげれげいいのでは?

yosudesu
質問者

お礼

参考になりました。有難うございます。

回答No.3

何度もすみません。 ご質問の意図を見誤ってしまいました。 No.1,2 は無視してください。

yosudesu
質問者

お礼

いろいろと有難うございました。

回答No.2
回答No.1

ランタイムライブラリの strtok 関数を使えば、楽に処理ができると思うのですが... 参考になるページはここです。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_strtok.2c_.wcstok.2c_._mbstok.asp ここにはサンプルもありますので、ご覧になってみてはいかがでしょうか?

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_strtok.2c_.wcstok.2c_

関連するQ&A

専門家に質問してみよう