• ベストアンサー

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や改行・空白についてがイマイチわかりません。 補足で質問もしようと思いますので付き合ってくれる方がいらっしゃいましたら連絡ください。

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

  • ベストアンサー
回答No.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が単語数となるはずです。

leeca0331
質問者

補足

#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); } ↑上記のような感じでできました。 ありがとうございまず。 みなさまのおかげで理解することが出来ました。 またわからないことがあればお世話になるかもしれませんが、その時はよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.2

こんにちは、honiyonです。  strlenという関数があります。 以下使用例です。 printf("あなたの入力した一行の英文は<%s>で、文字数は%dです。\n", str, strlen(str)); }  詳しくはお使いの言語ソフトのヘルプ等を参照してください。(必ず載ってます)  参考になれば幸いです(..

leeca0331
質問者

補足

#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単語です。 と結果表示したいのですが。

すると、全ての回答が全文表示されます。
回答No.1

多分、scanf()の使用だと思います。 たしか、scanf()は、スペースで区切られたところまでを1文と判断しているはずです。 scanf()の変わりに、gets()を使ってみては堂でしょうか? PS.文字列の長さを調べるには、strlen()を使うと簡単です。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • Lucina AX-09のドライバーを探しています。現在使用中PCはmacOS 14.3.1です。
  • Lucina AX-09のドライバーを探しています。使用中のPCはmacOS 14.3.1です。
  • Lucina AX-09のドライバーを探しています。現在の環境はmacOS 14.3.1です。
回答を見る

専門家に質問してみよう