1
我一直在這個問題上困擾了很多年,我只是想不出一種方法來解決這個問題。 所以,我有一個數組,其中有一個條目列表,每個術語將與輸入文件進行比較,然後如果匹配,將會有一個輸出,其中會顯示「Match found」... 我有一個問題是strncasecmp只比較行的前n個字符。這意味着我必須每次都將陣列移動到最後。在一行中搜索一個術語
這是我想出了那麼遠,
while (fgets(line, 256, ifp) != NULL){
for (i = 0; i < numberTerms; i++){
len = strlen(term[i]);
for (lineStep = 0; lineStep < (strlen(line) - 1); lineStep++){
if (line[lineStep] == '\0')
break;
if (strncasecmp(line, term[i], len) == 0)
printf("Match found!\n");
for (j = 0; j < (strlen(line)-1); j++)
line[lineStep] = line[lineStep + 1];
}
}
}
僅打印「匹配找到了!」一次而不是它需要的5次。我究竟做錯了什麼?另外,如果有更簡單的方式來搜索字符串,請讓我知道。
嘗試'strcasetsr()' – technosaurus
我不能,除非您發佈的信息,瞭解你的問題,這樣我可以重現你的結果。 –
'strncasecmp()'只會比較該行的第一個「n」字符,如果將整行傳遞給它。如果你不是'line',而是''line [i]'這樣的東西,那麼你就不會這麼做。 –