3
我想要一個程序從用戶讀取兩個單詞並打印第一個單詞中出現的第二個單詞的次數。故障循環'for'和'while'
當我與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()'的返回值是不好的。 –
你的輸入字符看起來比49個字符長 – Joni
雖然你只是把while循環改爲while循環。您還將'text [200]'更改爲'單詞[50]'和將'搜索[20]'更改爲'搜索[50]'。 – immibis