アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

多分、scanf()の使用だと思います。



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



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

こんにちは、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単語です。

と結果表示したいのですが。

補足日時:2002/01/08 23:39
    • good
    • 0

単語の数を数える場合、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が単語数となるはずです。

この回答への補足

#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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!