こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

次のプログラムが作れません…

次のプログラムが作れません…

キーボードから文字列と一つの検索文字を入力します。
この時、入力した文字列の中にある、検索文字の個数を表示するプログラムなのですが…

条件が以下のようにあります。

プログラムの関数の定義部分以外は、以下にあげるものを変更せずそのまま使用すること。

#include<stdio.h>

int search_letter(char *str, char letter);

int main(void){
int cnt;
char in[100];
cahr ch;
printf("Input a string: ");
gets(in);
printf("Input a letter: ");
scanf("%c", &ch); cnt = search_letter( in, ch );
printf("The number of letter '%c' is %d\n", ch, cnt);
return 0;
}

プログラム中に出てくる関数「search_letter」は、第一引数で与えた文字列へのポインタで示される文字列の中から、第二引数で与えられた文字の個数を計算する関数です。

このプログラムでは大文字、小文字を区別して処理します。

出力結果は以下と同じようにしなければなりません。

./pz1-2
Input a string: Mousukkari akidesune
Input a letter: o
The number of letter 'o' is 1

*"./pz1-2"と"Mousukkari akidesune"はキーボードから入力した文字です。


よろしくお願いします。

投稿日時 - 2009-11-13 07:01:07

QNo.5443888

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> cahr ch;
char ch;

> *"./pz1-2"と"Mousukkari akidesune"はキーボードから入力した文字です。
oもですね。

配列のカウント数分ループして、該当の文字が出たらカウントアップ。
あとは return で個数を返すだけです。

どこがわからないのか提示してください。回答に困ってしまいます^^;

投稿日時 - 2009-11-13 14:31:13

ANo.1

つまり search_letter() 関数を書くだけですね。
関数の中身はほんの数行。文字列は文字の配列ですから、引数となった文字列を順に見ていき、探す文字と同じ文字があったらカウントを増やしていき、それを関数の値として返せばよいだけです。

Cとしては初歩的な課題ですから、これくらいはご自分で書けないといけませんよ。ここに質問すれば答えを教えてもらえるという、虫のよいことを考えてはいませんか。これまで習ったことを復習すれば、ヒントがあるはずです。

それでも分からないのなら、どこが分からないのか、ご自分で考えたコードを示した上で、アドバイスを求めるべきでしょう。
分からないのは、関数の引数(の型?)の書き方でしょうか、ループを継続する(或いは終了する)条件の書き方でしょうか…

投稿日時 - 2009-11-13 10:13:02

あなたにオススメの質問