[英]Searching a text file for a string in C
對於我正在編寫的程序的一部分,我需要搜索一個文本文件以查看文件中是否存在某個單詞,如果存在,我想將其打印到屏幕上。 為什么使用for循環來進行字符串比較,例如:
int in_dictionary(char dict[][8], char word[], int size) {
int i;
for (i = 0; i<size; i++)
if (strcmp(word, dict[i]) == 0){
return 0;
}
else{
return 1;
}
}
不為我工作?
您只將字典中的第一個單詞與要搜索的單詞進行比較。 比較所有單詞后,您才應該返回失敗:
for(...) {
if(dict[i] matches)
return MATCH;
}
return NO_MATCH;
同樣,您的返回值是后退的-通常,您將返回0表示失敗(不匹配),而返回1表示成功(匹配)。 根據慣例, main()
函數和許多POSIX系統調用是例外(它們返回0表示成功,-1表示失敗)。
當strcmp()
返回0
,表示已找到匹配項。 那時您需要返回1
而不是0
。 同樣,如果strcmp()
返回1
則表示字典中的當前元素與搜索字符串不匹配,這時您不能得出字典中不存在匹配項的結論,它可能稍后出現。 因此,只有將搜索字符串與字典中的所有元素進行比較卻沒有找到任何匹配項時,您才能得出結論,搜索字符串不在字典中。
你需要:
for (i = 0; i<size; i++)
if (strcmp(word, dict[i]) == 0){
return 1;
}
return 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.