C - 如何计算字符串中的确切单词? (不包括单词在另一个里面的次数)
C - How to count exact word in a string? (exluding the times the word is inside of another)
我正在制作一个程序,它从标准输入或文件中读取数据并计算 if 语句的数量。我已经做到了,但是如果例如我有一个名为 "asdifasd" 或 "ifasd" 的变量,它将被视为一个 if 语句。如何仅提取 if 语句?这是我的代码:
char str[150];
int ifs = 0;
while (fgets(str, sizeof(str), stdin) != NULL)
{
char *p = str;
while (((p = (strstr(p, "if"))) != NULL)) {
ifs++;
++p;
}
}
我一直在考虑用 strncmp
做点什么,但我不确定怎么做。
在使用 strstr 找到 "if" 后,检查前后的字符以确保它们不是字母。喜欢:
{
char *p = str;
while (((p = (strstr(p, "if"))) != NULL)) {
if ((p == str || !isalnum((unsigned char) p[-1])) &&
!isalnum((unsigned char) p[2]))
++ifs;
++p;
}
}
我正在制作一个程序,它从标准输入或文件中读取数据并计算 if 语句的数量。我已经做到了,但是如果例如我有一个名为 "asdifasd" 或 "ifasd" 的变量,它将被视为一个 if 语句。如何仅提取 if 语句?这是我的代码:
char str[150];
int ifs = 0;
while (fgets(str, sizeof(str), stdin) != NULL)
{
char *p = str;
while (((p = (strstr(p, "if"))) != NULL)) {
ifs++;
++p;
}
}
我一直在考虑用 strncmp
做点什么,但我不确定怎么做。
在使用 strstr 找到 "if" 后,检查前后的字符以确保它们不是字母。喜欢:
{
char *p = str;
while (((p = (strstr(p, "if"))) != NULL)) {
if ((p == str || !isalnum((unsigned char) p[-1])) &&
!isalnum((unsigned char) p[2]))
++ifs;
++p;
}
}