Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

c言語 文字列検索

解決したいこと

指定されている文字列の中から、ある文字列の個数を求めたい。

該当するソースコード

#include

int main(){

   char   s[]="government of the people , by, the people , for the people";
   char   str[100];
   int   sum, i,j,x,a,b;
   
   printf("探す文字列を入力してください:");   scanf("%s", str);
   
   for(i=0; str[i] != '\0'; i++){
   	x=x+1;
   }
   
   
   for(i=0; s[i]!='\0'; i++){
   	for(j=i; j<j+x; j++){
   		if(s[i]==str[b]){
			a=a+1;
		} else{
			break;
		}
	
		if(a==x){
			sum=sum+1;
	}
	b=b+1;
}
b=0;
a=0;

}

   printf("%sは%d個ありました。\n", str,sum);
   
   return(0);
}

自分ではこれでいけると思い、このように書いたのですが、
実行させると
image.png
こうなってしまい、うまくできません。
どこが違いのでしょうか?
お願いします。

0

1Answer

まずは、a=a+1;の後ろに、i++;又はi=i+1;が必要です。
こうしないと、比較元と比較先の文字比較は同時に進みません。

次、if(a==x){...}のブロックをjループの外に移動するはずです。
jは比較元の文字列が終わるまでループするため、
ループが終わらないとa==xにはならないので、
内部で比較しても最後の1回だけは有用で、
それ以外の比較は意味ないと思います。

1Like

Your answer might help someone💌