在c中匹配一个确切的单词

A. *_*ali 2 c strstr

我可以使用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逐字逐句扫描并检查匹配?

chq*_*lie 5

这是一个适用于您的通用功能.它返回指向第一个匹配的指针,或者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)