家の中でのこだわりスペースはどこですか?

文字列、1文字が与えられたとき、これをポインタで入力し文字列中に含まれる文字の個数を計算するプログラムを作成せよ。

と、いう課題がだされたんですけど、ユーザが任意の文字列と1文字を入力できるようにすることができません…。
多分main関数の部分をちょっといじくればよいと思うのですが…。
どなたかアドバイスをお願いします。
#include <stdio.h>

int count(const char *str, const char ch)
{
int cnt=0;
while (*str!='\0')
{
if (*str==ch)
cnt++;
str++;
}
return cnt;
}

int main()
{
const char *str="hello,world!";
const ch='o';

int cnt;

cnt=count(str, ch);

printf("%s中に%cは%d個です\n", str, ch, cnt);


return 0;
}

A 回答 (2件)

scanf"%s", str)は、バッファオーバーフローの危険と改行文字の食べ残し問題がありますね。


-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
int main()
{
char ch;
char str[BUFSIZ];
int cnt;

printf("文字列を入力して下さい > ");
fgets(str,BUFSIZ,stdin);

printf("カウントする文字を入力してください > ");
ch = getchar();

cnt=count(str, ch);
printf("%s中に%cは%d個です\n", str, ch, cnt);

return 0;
}
    • good
    • 1
この回答へのお礼

回答を頂きありがとうございます!
このプログラムだと家にあるC言語のコンパイラでも
コンパイルする事が出来ました。

お礼日時:2005/12/22 03:47

最近C言語を使ってませんが、count関数に渡す引数をmain関数で標準入力させたいってことですか?



int main()
{
char ch;
char str[256];
int cnt;

printf("文字列を入力して下さい > ");
scanf("%s", str);

printf("カウントする文字を入力してください > ");
scanf("%c", ch);

cnt=count(str, ch);
printf("%s中に%cは%d個です\n", str, ch, cnt);

return 0;
}
    • good
    • 2
この回答へのお礼

素早い回答をありがとうございます!。
早速明日学校で試してみようと思います。

お礼日時:2005/12/20 01:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報