我正在尝试编写代码来计算一个字符串在另一个字符串中重复的次数。(如果有更简单的方法,请告诉我。)
这是我现在拥有的代码:
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;
}
应用程序编译。例如,当我在第一个输入“banana”,scanf
然后在第二个输入“na”时,应用程序会给出正确的答案。但是,如果我在第一个输入“香蕉和牛奶” scanf
,它会自动将第二个解释scanf
为“和”,即使我除了“香蕉和牛奶ENTER”什么都不输入
发生了什么?