ページ 1 / 1
指定した文字数を数える
Posted: 2011年1月19日(水) 17:24
by がつ
はじめまして。学校の課題がわからないので質問させていただきます。
課題は
入力された文字列に指定した文字が何個あるか数えるプログラムを作れ。
というものです。
#include <stdio.h>
#include <string.h>
int main(void){
int c=0,length,i;
char buf[80];
scanf("%s",buf);
length=strlen(buf);
for(int i=0;i<length;i++){
if(buf==)
c1+;
else if(buf==)
一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 17:49
by bitter_fox
がつ さんが書きました:一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
後は、比較する文字を入力してもらいましょう。
それを、for内で文字列の各々の文字と比較してあげて、
イコールだったら、カウンタ(ここでは見るとc)をインクリメントしてあげればよいです。
[ヒント]
文字の取得は、
scanf("%c", &ch);や
ch = getchar();とするとできる。
インクリメントは
変数名++;
と書きます。
[hr][追記]
それから、コードを載せる際はcodeタグで囲んでいただきますようにお願いします。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:08
by がつ
返信ありがとうございます。
コード:
#include <stdio.h>
#include <string.h>
int main(void){
int c=0,length,i,ch;
char buf[80];
printf("文字列を入力してください=");
scanf("%s",buf);
printf("数える文字を入力してください=");
scanf("%c", &ch);
length=strlen(buf);
for(int i=0;i<length ;i++);{
if(buf[i]==ch)
c++;
else if(buf[i]==);
}
printf("文字数は%d個です。",c);
return 0;
}
ここまでやってみたのですがelse ifの条件、細かいところが不明です。
あとこれでcodeタグで囲めていますか?
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:13
by みけCAT
forの中のintはいらないと思います。
else ifは不要な気がします。気のせいかもしれません。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:20
by bitter_fox
がつ さんが書きました:コード:
for(int i=0;i<length ;i++);{
if(buf[i]==ch)
c++;
else if(buf[i]==);
}
ここまでやってみたのですがelse ifの条件、細かいところが不明です。
あとこれでcodeタグで囲めていますか?
まず、forの末尾に;が有って正常に動作しません。
また、すでに、iは定義済みですので、int i = 0では無く、i = 0としましょう。
また、今やりたいのは、同じときにインクリメントするだけですので、else if は不要です。
囲めてますが、ちょっとインデントがきれいにできてないですね。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:40
by がつ
bitter_foxさん、みけCATさんありがとうございます。
コード:
#include <stdio.h>
#include <string.h>
int main(void){
int c=0,length,i,ch;
char buf[80];
printf("文字列を入力してください=");
scanf("%s",buf);
printf("数える文字を入力してください=");
scanf("%c", ch);
length=strlen(buf);
for(i=0;i<length ;i++){
if(buf[i]==ch)
c++;
}
printf("文字数は%d個です。\n",c);
return 0;
}
一応動くようになったのですがscanf("%c", &ch);を入力する部分でエラーがでて止まってしまいました。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:43
by h2so5
添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:49
by がつ
h2so5 さんが書きました:添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
返信ありがとうございます。
&を入れて動かしてみたら今度はエラーが出なかったのですがscanf("%c", &ch)の部分が無視されて動いてしまいました。
入力していないので当たり前ですが”文字数は0個です”と表示されました。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:56
by みけCAT
scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 18:58
by みけCAT
scanf("%s",buf);
だと、スペースなどが入力できないので、
fgets(buf,sizeof(buf),stdin);
の方がいいかもしれません。
この場合
while(getchar()!='\n');
はいりません。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 19:07
by がつ
みけCAT さんが書きました:scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
こちらを入れてみたところ、入力はできるようになったのですが入力した文字を数えてくれませんでした。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 19:15
by みけCAT
chをchar型にしてみてください。
今のコードだとint型になっています。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 19:35
by がつ
みけCAT さんが書きました:chをchar型にしてみてください。
今のコードだとint型になっています。
#include <stdio.h>
#include <string.h>
int main(void){
int c=0,length,i;
char ch[10];
char buf[80];
printf("文字列を入力してください=");
scanf("%s",buf);
while(getchar()!='\n');
printf("数える文字を入力してください=");
scanf("%c",&ch);
length=strlen(buf);
for(i=0;i<length ;i++){
if(buf
==ch)
c++;
}
printf("文字数は%d個です。\n",c);
return 0;
}
char型にするとはこれでよいのでしょうか?
これでも数えてくれませんでした。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 19:42
by みけCAT
配列にする必要はありません。
char ch;
でいいです。
Re: 指定した文字数を数える
Posted: 2011年1月19日(水) 19:45
by がつ
ありがとうございます!!
ちゃんと数えてくれるようになりました!!
本当にありがとうございました!!!!