• 締切済み

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

次のプログラムが作れません… キーボードから文字列と一つの検索文字を入力します。 この時、入力した文字列の中にある、検索文字の個数を表示するプログラムなのですが… 条件が以下のようにあります。 プログラムの関数の定義部分以外は、以下にあげるものを変更せずそのまま使用すること。 #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"はキーボードから入力した文字です。 よろしくお願いします。

みんなの回答

  • yone_sk
  • ベストアンサー率34% (58/167)
回答No.2

> cahr ch; char ch; > *"./pz1-2"と"Mousukkari akidesune"はキーボードから入力した文字です。 oもですね。 配列のカウント数分ループして、該当の文字が出たらカウントアップ。 あとは return で個数を返すだけです。 どこがわからないのか提示してください。回答に困ってしまいます^^;

すると、全ての回答が全文表示されます。
  • 6yemon
  • ベストアンサー率69% (25/36)
回答No.1

つまり search_letter() 関数を書くだけですね。 関数の中身はほんの数行。文字列は文字の配列ですから、引数となった文字列を順に見ていき、探す文字と同じ文字があったらカウントを増やしていき、それを関数の値として返せばよいだけです。 Cとしては初歩的な課題ですから、これくらいはご自分で書けないといけませんよ。ここに質問すれば答えを教えてもらえるという、虫のよいことを考えてはいませんか。これまで習ったことを復習すれば、ヒントがあるはずです。 それでも分からないのなら、どこが分からないのか、ご自分で考えたコードを示した上で、アドバイスを求めるべきでしょう。 分からないのは、関数の引数(の型?)の書き方でしょうか、ループを継続する(或いは終了する)条件の書き方でしょうか…

すると、全ての回答が全文表示されます。

関連するQ&A