指定した文字数を数える
指定した文字数を数える
はじめまして。学校の課題がわからないので質問させていただきます。
課題は
入力された文字列に指定した文字が何個あるか数えるプログラムを作れ。
というものです。
#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==)
一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
課題は
入力された文字列に指定した文字が何個あるか数えるプログラムを作れ。
というものです。
#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==)
一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: 指定した文字数を数える
後は、比較する文字を入力してもらいましょう。がつ さんが書きました:一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
それを、for内で文字列の各々の文字と比較してあげて、
イコールだったら、カウンタ(ここでは見るとc)をインクリメントしてあげればよいです。
[ヒント]
文字の取得は、
scanf("%c", &ch);や
ch = getchar();とするとできる。
インクリメントは
変数名++;
と書きます。
[hr][追記]
それから、コードを載せる際はcodeタグで囲んでいただきますようにお願いします。
Re: 指定した文字数を数える
返信ありがとうございます。
ここまでやってみたのですがelse ifの条件、細かいところが不明です。
あとこれでcodeタグで囲めていますか?
#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;
}
あとこれでcodeタグで囲めていますか?
Re: 指定した文字数を数える
forの中のintはいらないと思います。
else ifは不要な気がします。気のせいかもしれません。
else ifは不要な気がします。気のせいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: 指定した文字数を数える
bitter_foxさん、みけCATさんありがとうございます。
一応動くようになったのですがscanf("%c", &ch);を入力する部分でエラーがでて止まってしまいました。
一応動くようになったのですがscanf("%c", &ch);を入力する部分でエラーがでて止まってしまいました。
Re: 指定した文字数を数える
添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
Re: 指定した文字数を数える
返信ありがとうございます。h2so5 さんが書きました:添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
&を入れて動かしてみたら今度はエラーが出なかったのですがscanf("%c", &ch)の部分が無視されて動いてしまいました。
入力していないので当たり前ですが”文字数は0個です”と表示されました。
Re: 指定した文字数を数える
scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
の後に
while(getchar()!='\n');
を入れてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 指定した文字数を数える
scanf("%s",buf);
だと、スペースなどが入力できないので、
fgets(buf,sizeof(buf),stdin);
の方がいいかもしれません。
この場合
while(getchar()!='\n');
はいりません。
だと、スペースなどが入力できないので、
fgets(buf,sizeof(buf),stdin);
の方がいいかもしれません。
この場合
while(getchar()!='\n');
はいりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 指定した文字数を数える
こちらを入れてみたところ、入力はできるようになったのですが入力した文字を数えてくれませんでした。みけCAT さんが書きました:scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
Re: 指定した文字数を数える
#include <stdio.h>みけCAT さんが書きました:chをchar型にしてみてください。
今のコードだとint型になっています。
#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型にするとはこれでよいのでしょうか?
これでも数えてくれませんでした。