【发布时间】:2015-01-18 20:21:02
【问题描述】:
当谈到 C 时,我完全是个业余爱好者,我在尝试编写这段代码时遇到了一些麻烦。我希望它检查文本文件中是否存在与给定字符串匹配的任何行。
例如,如果“stackoverflow”在文本文件中并且我输入的字符串是“www.stackoverflow.com”,它应该返回一个正匹配。
但目前它正在搜索文本文件中的字符串,这与我想要的相反。我将不胜感激任何提示/提示!
int Check(char *fname, char *str) {
FILE *file;
int i = 1;
int r = 0;
char temp[1000];
if((file = fopen(fname, "r")) == NULL) {
return(-1);
}
while(fgets(temp, 1000, file) != NULL) {
if((strstr(temp, str)) != NULL) {
printf("Host name found on line: %d\n", i);
printf("\n%s\n", str);
r++;
}
i++;
}
if(r == 0) {
printf("\nHost name not blocked.\n");
}
if(file) {
fclose(file);
}
return(0);
}
【问题讨论】:
-
您好,欢迎来到 StackOverflow!你试过用
strstr(str, temp)切换strstr(temp, str)吗? -
是的,但是当我尝试这样做时,即使我比较的字符串相同,我也不会得到任何结果。
-
请记住
fgets捕获尾随换行符 (\n);你可能需要自己把它去掉。 -
您要比较的一个或两个字符串的末尾是否有空格(行尾字符,如
\r和/或\n)? -
@Piglet 我很高兴你让它工作了:)。您应该发布您的答案,然后将其标记为已接受,以便其他用户看到它。
标签: c