我希望有一个程序,可以从用户那里读取两个单词,并打印出第一个单词中第二个单词出现的次数。
当我使用for
循环时,它完全按照我的要求工作,但是当我使用while
循环并尝试特定输入时,它没有给出正确的结果。我无法弄清楚为什么。下面是代码片段。
使用for
循环:
#include <stdio.h>
int main()
{
char text[200], search[20];
int i, j, count = 0;
scanf("%s %s", text, search);
for (i = 0; text[i] != '\0'; i++) {
for (j = 0; search[j] != '\0' && search[j] == text[i + j]; j++) {
}
if (search[j] == '\0') {
count++;
}
}
printf("%d", count);
}
使用while
循环:
#include <stdio.h>
int main()
{
char word[50], search[50];
int i, j, count = 0;
scanf("%s %s", word, search);
i = 0;
while (word[i] != '\0') {
j = 0;
while (search[j] != '\0' && search[j] == word[i + j]) {
j++;
}
if (search[j] == '\0') {
count++;
}
i++;
}
printf("%d", count);
}
这是一种与 for
循环配合使用正常工作但与 while
循环不正确的输入方法:
athousandyearsofthousandtimesandinthousandplacesOand... and
应该打印4
,但是它打印了3026483
。
scanf()
的返回值是不好的。 - John Zwincktext[200]
更改为word[50]
,并将search[20]
更改为search[50]
。 - user253751int main(void)
比int main()
更好。 - Meninx - メネンックス