- ベストアンサー
文字数と単語数を数えるプログラム
When in Rome, do as the Romans do. をchar形配列に格納し、文字列に含まれる(空白以外の)文字数と単語数を数え、結果を画面に出力するプログラムがうまくできません。文字数と単語数の数え方がさっぱり… アドバイスしていただけると幸いです。よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字数も数えると云う事なので、左から右端(NULL文字)まで1文字ずつ 走査して行きます。ここで、単語も構成する文字がA-Z,a-zであるとして、 文字から空白や記号(','や'.'、NULL文字も含む)に変わったら一つの単語 とします。 具体的には、 1. カウンタ、フラグを初期化 2. NULL文字になるまで繰り返し 3. 文字かどうか判定する 4. 文字なら文字をカウントして、フラグをセット 5. 文字でないなら、 6. フラグがセットされていれば単語数をカウントしフラグをおろす 7. フラグがセットされていないのなら何もしない 8. 1へ でいけると思います。
その他の回答 (2)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス >多分これを使わなくてもできるのだと思うのですが、なにかいい方法はありませんか? ↑ それが分かるのなら自力で出来る気がしますが…。 ・いい方法とはアルゴリズムのことですか? 文字数は isalpha() 関数でチェックして英大文字、英小文字の場合にカウンタを インクリメントすればよい。 単語数はアルファベット、空白文字の並びがいくつ登場するかをカウントすればよい。 空白文字は isspace() 関数でチェックできます。 ・両方とも文字検査関数と組み合わせるだけでカウントできます。 ctype.h ヘッダをインクルードすれば利用できるようになります。 ・以上。
お礼
アドバイスありがとうございます。なんか難しそうですが自分なりに調べて試してみます。ありがとうございました
- volveive
- ベストアンサー率38% (31/81)
strtok という関数について調べてみてください。
補足
アドバイスありがとうございます strtokですか…。見てみましたがこの関数はまだ習ってません。 多分これを使わなくてもできるのだと思うのですが、なにかいい方法はありませんか?
お礼
アドバイスありがとうございます。 とてもわかりやすく説明していたき、ありがとうございます。 これならなんとかなりそうです。 ありがとうございました。