指定した文字数を数える

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
がつ

指定した文字数を数える

#1

投稿記事 by がつ » 14年前

はじめまして。学校の課題がわからないので質問させていただきます。
課題は

入力された文字列に指定した文字が何個あるか数えるプログラムを作れ。

というものです。

#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: 指定した文字数を数える

#2

投稿記事 by bitter_fox » 14年前

がつ さんが書きました:一応ここまでネットで調べながら考えたのですが何が何だか分からなくなってしまいました。
言葉足らずですがヒントでも教えていただけたらうれしいです。
後は、比較する文字を入力してもらいましょう。

それを、for内で文字列の各々の文字と比較してあげて、
イコールだったら、カウンタ(ここでは見るとc)をインクリメントしてあげればよいです。

[ヒント]
文字の取得は、
scanf("%c", &ch);や
ch = getchar();とするとできる。

インクリメントは
変数名++;
と書きます。

[hr][追記]
それから、コードを載せる際はcodeタグで囲んでいただきますようにお願いします。

がつ

Re: 指定した文字数を数える

#3

投稿記事 by がつ » 14年前

返信ありがとうございます。

コード:

#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タグで囲めていますか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 指定した文字数を数える

#4

投稿記事 by みけCAT » 14年前

forの中のintはいらないと思います。
else ifは不要な気がします。気のせいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: 指定した文字数を数える

#5

投稿記事 by bitter_fox » 14年前

がつ さんが書きました:

コード:

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: 指定した文字数を数える

#6

投稿記事 by がつ » 14年前

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);を入力する部分でエラーがでて止まってしまいました。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: 指定した文字数を数える

#7

投稿記事 by h2so5 » 14年前

添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。

がつ

Re: 指定した文字数を数える

#8

投稿記事 by がつ » 14年前

h2so5 さんが書きました:添付されたコードのは chの前に & が入っていないみたいですが。
エラーが出る場合は、必ず具体的なメッセージも記入してください。
返信ありがとうございます。
&を入れて動かしてみたら今度はエラーが出なかったのですがscanf("%c", &ch)の部分が無視されて動いてしまいました。
入力していないので当たり前ですが”文字数は0個です”と表示されました。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 指定した文字数を数える

#9

投稿記事 by みけCAT » 14年前

scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 指定した文字数を数える

#10

投稿記事 by みけCAT » 14年前

scanf("%s",buf);
だと、スペースなどが入力できないので、
fgets(buf,sizeof(buf),stdin);
の方がいいかもしれません。
この場合
while(getchar()!='\n');
はいりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

がつ

Re: 指定した文字数を数える

#11

投稿記事 by がつ » 14年前

みけCAT さんが書きました:scanf("%s",buf);
の後に
while(getchar()!='\n');
を入れてみてください。
こちらを入れてみたところ、入力はできるようになったのですが入力した文字を数えてくれませんでした。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 指定した文字数を数える

#12

投稿記事 by みけCAT » 14年前

chをchar型にしてみてください。
今のコードだとint型になっています。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

がつ

Re: 指定した文字数を数える

#13

投稿記事 by がつ » 14年前

みけ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型にするとはこれでよいのでしょうか?
これでも数えてくれませんでした。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 指定した文字数を数える

#14

投稿記事 by みけCAT » 14年前

配列にする必要はありません。
char ch;
でいいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

がつ

Re: 指定した文字数を数える

#15

投稿記事 by がつ » 14年前

ありがとうございます!!
ちゃんと数えてくれるようになりました!!
本当にありがとうございました!!!!

閉鎖

“C言語何でも質問掲示板” へ戻る