我可以使用strstr函数来匹配确切的单词吗?例如,假设我有单词hello和输入字符串line:
如果
char* line = "hellodarkness my old friend";
Run Code Online (Sandbox Code Playgroud)
我用
result = strstr(line, "hello");
Run Code Online (Sandbox Code Playgroud)
result将匹配(不是NULL),但我想只匹配确切的单词"hello"(以便"hellodarkness"不匹配),结果将为NULL.是否可以使用strstr或者我必须fscan逐字逐句扫描并检查匹配?
这是一个适用于您的通用功能.它返回指向第一个匹配的指针,或者NULL如果找不到则:
#include <ctype.h>
#include <string.h>
char *word_find(const char *str, const char *word) {
const char *p = NULL;
size_t len = strlen(word);
if (len > 0) {
for (p = str; (p = strstr(p, word)) != NULL; p++) {
if (p == str || !isalnum((unsigned char)p[-1])) {
if (!isalnum((unsigned char)p[len]))
break; /* we have a match! */
p += len; /* next match is at least len+1 bytes away */
}
}
}
return p;
}
Run Code Online (Sandbox Code Playgroud)