OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

C言語の文字列の長さを計算し表示する方法について。

  • 暇なときにでも
  • 質問No.194846
  • 閲覧数545
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 16% (2/12)

#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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル8

ベストアンサー率 16% (9/55)

単語の数を数える場合、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

お礼率 16% (2/12)

#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);
}

↑上記のような感じでできました。
ありがとうございまず。
みなさまのおかげで理解することが出来ました。
またわからないことがあればお世話になるかもしれませんが、その時はよろしくお願いします。
投稿日時 - 2002-01-09 06:48:16
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル8

ベストアンサー率 16% (9/55)

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

たしか、scanf()は、スペースで区切られたところまでを1文と判断しているはずです。
scanf()の変わりに、gets()を使ってみては堂でしょうか?



PS.文字列の長さを調べるには、strlen()を使うと簡単です。


  • 回答No.2
レベル13

ベストアンサー率 37% (331/872)

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

 strlenという関数があります。
以下使用例です。

printf("あなたの入力した一行の英文は<%s>で、文字数は%dです。\n", str, strlen(str));
}
 詳しくはお使いの言語ソフトのヘルプ等を参照してください。(必ず載ってます)

 参考になれば幸いです(..
補足コメント
leeca0331

お礼率 16% (2/12)

#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単語です。

と結果表示したいのですが。
投稿日時 - 2002-01-08 23:39:18
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ