我試圖編寫一個代碼,它將查找字符串中的特定單詞,並將其計入字符串中。 如果該字不存在於字符串中,則應打印該字未找到。 例如,對於句子「我遲到了」,對於「遲到」的結果應該是3字計數器代碼跳過
int count=0,i=0,j=0,k;
char word[30];
getchar();
gets(word);
k=strlen(word);
while(arr[i]!='\0'){
if(arr[i]==word[j]){
i++;
j++;
}
i++;
if(arr[i]==' ') // moves across a word in the string
count++; // count a word the index has passed
}
if(j==k) // if all letters were a match
printf("The word %s is placed in the %d place." , word , count);
else
printf("The word %s is not found." , word);
}
的問題是,對每個句子中輸入,它打印:
字未找到%s。
我認爲它會跳過由於某種原因,第一部分,並直接進入word is not found
,但即使是在調試後,爲什麼它會跳過我無法趕上當下和原因。
歡迎來到Stack Overflow! [不要使用'gets()',這很危險](http://stackoverflow.com/q/1694036/2173917)。改用['fgets()'](https://linux.die.net/man/3/fgets)。 –
你的代碼似乎在測試'word'中的字母是否出現在'arr'中的字母中 - 但不一定是連續的。這不是你想要的,所以除了代碼中的其他錯誤之外,你還有一個基本的邏輯錯誤。你的代碼似乎缺少一個內部循環。或者,您可以使用'strtok()'分隔空間,並使用'strcmp()'將'strtok()'返回的字符串與目標字詞進行比較。另外 - 注意@SouravGhosh的警告。 –
使用調試器進行調試 – pm100