- ベストアンサー
C言語の文字列の長さを計算し表示する方法について。
#include <stdio.h> main( void ) { int i; char str[128]; printf("一行の英文を入力してください → "); scanf("%s",str); i = 0; while (str[i] != '\0'){ i++; } printf("あなたの入力した一行の英文は<%s>で、文字数は%dです。\n", str, i); } って方法で文字列の長さを計算しひょうじしてるのですが…。 これだと1単語しか数えられません。 どうしたら1行の長さを表示できるのでしょうか? nullや改行・空白についてがイマイチわかりません。 補足で質問もしようと思いますので付き合ってくれる方がいらっしゃいましたら連絡ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
単語の数を数える場合、strlen()を使わずに、はじめにやっていたとおり、 while (str[i] != '\0'){ i++; } の方法を使って、 flg=j=0; while (str[i] != '\0'){ if(str[i] != ' '){ if(flg==0){ j++; } flg=1; }else{ flg=0; } i++; } とすれば、iが文字数、jが単語数となるはずです。
その他の回答 (2)
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 strlenという関数があります。 以下使用例です。 printf("あなたの入力した一行の英文は<%s>で、文字数は%dです。\n", str, strlen(str)); } 詳しくはお使いの言語ソフトのヘルプ等を参照してください。(必ず載ってます) 参考になれば幸いです(..
補足
#include <stdio.h> #include <string.h> main( void ) { char str[128]; printf("一行の英文を入力してください → "); gets(str); printf("あなたの入力した一行の英文は<%s>で、文字数は%dです。\n", str, strlen(str)); } で、なんとかできました。 ここから単語の数を数えるのはどうしたらよろしいのでしょう? 一行の英文を入力してください → I am KEN と入力して。 …3単語です。 と結果表示したいのですが。
- yusuke5111
- ベストアンサー率16% (9/55)
多分、scanf()の使用だと思います。 たしか、scanf()は、スペースで区切られたところまでを1文と判断しているはずです。 scanf()の変わりに、gets()を使ってみては堂でしょうか? PS.文字列の長さを調べるには、strlen()を使うと簡単です。
補足
#include <stdio.h> main( void ) { int i, j, t, flg; char str[128]; printf("一行の英文を入力してください → "); gets(str); i = 0; flg=j=0; while (str[i] != '\0'){ if(str[i] != ' '){ if(flg==0){ j++; } flg=1; }else{ flg=0; } i++; } printf("あなたの入力した一行の英文は<%s>で、文字数は%dで単語数は%dです。\n", str, i, j); } ↑上記のような感じでできました。 ありがとうございまず。 みなさまのおかげで理解することが出来ました。 またわからないことがあればお世話になるかもしれませんが、その時はよろしくお願いします。