- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの改良)
プログラムの改良方法
このQ&Aのポイント
- プログラムの改良方法について教えてください。
- 現在、文章を単語毎に分割するプログラムを作成していますが、スペースが余計に入ってしまう問題があります。
- スペースの余計な挿入を回避するための改良方法を教えてください。
- みんなの回答 (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;
その他の回答 (4)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.4
単語の切り分けのifで、 「文字列strに1文字以上格納されていて、1つ前の文字が\0じゃなかったら」という条件を追加してあげれげいいのでは?
質問者
お礼
参考になりました。有難うございます。
- i_love_chocochan
- ベストアンサー率39% (11/28)
回答No.3
何度もすみません。 ご質問の意図を見誤ってしまいました。 No.1,2 は無視してください。
質問者
お礼
いろいろと有難うございました。
- i_love_chocochan
- ベストアンサー率39% (11/28)
回答No.2
- i_love_chocochan
- ベストアンサー率39% (11/28)
回答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 ここにはサンプルもありますので、ご覧になってみてはいかがでしょうか?
補足
大変参考になりました。 サンプルプログラムを追加しI□am□□a□□□boy□□.とスペースが余計に入ってしまってる文章を実行したところIとamと□aと□□boyと□と.になってしまいます。 これを□と.と分割せずに実行結果を□.としたいのですがどうすればよいでしょうか? 区切り符号を表示させる if( key=='.' || key== '!' || key=='?' || key=='"'){ のif文中の.や!の前にスペースがある場合上手くいかないようなのです。□□!や□□□? お時間ありましたら補足部分も御願い頂けませんでしょうか。