文字列が別の文字列内で繰り返される回数をカウントするコードを作成しようとしています。(もっと簡単な方法があれば教えてください。)
これが私が今持っているコードです:
int getStringLenght (char str[]) {
int lenghtOfTheString;
int i;
for (i = 0; i < 100; i++) {
if(str[i] == '\0') {
lenghtOfTheString = i;
break;
}
}
return lenghtOfTheString;
}
int main()
{
printf("Type a string: ");
char T[1024];
scanf("%s",&T);
char P[100];
printf("Type a substring: ");
scanf("%s",&P);
printf("%s",P);
int stringSize = getStringLenght (P);
int occurences = 0;
int i;
for (i = 0; i < 10; i++) {
int j;
if(T[i] == P[0]) {
for (j = 0;j<10;j++) {
char c1 = T[i+j];
char c2 = P[j];
if(c1 != c2) {
break;
}
if(j == stringSize-1) {
occurences++;
//printf("string iguais em i = %d",i);
}
}
}
}
printf("\nThe substring %s was found %d times", P, occurences);
return 0;
}
アプリがコンパイルされます。たとえば、最初に「バナナ」と入力scanf
し、2 番目に「な」と入力すると、アプリは正しい答えを出します。しかし、最初に「バナナとミルク」と入力すると、「バナナとミルク」以外は何も入力しなくてもscanf
、2 番目は自動的に「and」と解釈されます。scanf
ENTER
何が起こっていますか?