ページ 11

前の投稿は分かりにくかったですね。文字列の課題

Posted: 2007年7月12日(木) 18:06
by 徹夜
文字strの中に、文字cが含まれている個数(含まれていなければ0)を返す関数
int str_chum(const char str[/url],int c)
を作成せよと言う問題なのですが
下まで作ってみたのですが、実行結果
どんな文字を打っても個数は0個ですとでてしまい数えられていないのですが
どこがおかしいですか
#include<stdio.h>
int str_chum(const char str[/url],int c);

int main()
{
char st[256];
char ch[10];


printf("文字列を入力してください:");
scanf("%s",st);

printf("個数を数えたい文字を入力してください:");
scanf("%s",ch);


printf("入力された文字の個数は%dです",str_chum(st,ch[0]));
}
int str_chum(const char str[/url],int c)
{
int i;
int count=0;

if(i=0,str!='\0',i++){
if(*str==c)
count++;

}
return(count);
}

Re:前の投稿は分かりにくかったですね。文字列の課題

Posted: 2007年7月12日(木) 20:46
by Hermit
色々おかしいです。
どこが変かご自分でチェックしてみてください。
#include<stdio.h>
int str_chum1(const char str[/url], int c);
int str_chum2(const char str[/url], int c);

int main()
{
	char st[256];
	char ch[10];

	printf("文字列を入力してください:");
	scanf("%s", st);

	printf("個数を数えたい文字を入力してください:");
	scanf("%s", ch);

	printf("入力された文字の個数は%dです\n", str_chum1(st, ch[0]));
	printf("入力された文字の個数は%dです\n", str_chum2(st, ch[0]));

	return 0;
}
int str_chum1(const char str[/url], int c)
{
	int i;
	int count = 0;

	for (i = 0; str != '\0'; i++) {
		if (str == c)
			count++;
	}
	return count;
}
int str_chum2(const char *str, int c)
{ // bcc32 Ver5.5.1 では、const char str[/url] ではエラーになるようなので、変更。他では問題ないはず。
	int count = 0;

	for ( ; *str != '\0'; str++) {
		if (*str == c)
			count++;
	}
	return count;
}