如何检查字符串是否包含特定字符?

How do I check if a string contains a certain character?

我是 C 编程的新手,例如,如果我们有:

我将如何检查字符串是否包含特定字符
void main(int argc, char* argv[]){

  char checkThisLineForExclamation[20] = "Hi, I'm odd!"
  int exclamationCheck;
}

因此,如果“!”,我如何将 exclamationCheck 设置为 1?存在,如果不存在则为 0?非常感谢您提供的任何帮助。

通过使用 strchr(),例如:

#include <stdio.h>
#include <string.h>

int main(void)
{
  char str[] = "Hi, I'm odd!";
  int exclamationCheck = 0;
  if(strchr(str, '!') != NULL)
  {
    exclamationCheck = 1;
  }
  printf("exclamationCheck = %d\n", exclamationCheck);
  return 0;
}

输出:

exclamationCheck = 1

如果您正在寻找简洁的单衬里,那么您可以遵循@melpomene 的方法:

int exclamationCheck = strchr(str, '!') != NULL;

如果不允许使用 C 字符串库中的方法,那么,正如@SomeProgrammerDude 所建议的,您可以简单地遍历字符串,如果任何字符是感叹号,如本例所示:

#include <stdio.h>

int main(void)
{
  char str[] = "Hi, I'm odd";
  int exclamationCheck = 0;
  for(int i = 0; str[i] != '[=12=]'; ++i)
  {
    if(str[i] == '!')
    {
      exclamationCheck = 1;
      break;
    }
  }
  printf("exclamationCheck = %d\n", exclamationCheck);
  return 0;
}

输出:

exclamationCheck = 0

请注意,当至少找到一个感叹号时,您可以中断循环,这样您就不需要遍历整个字符串。


PS: What should main() return in C and C++? int, 不是 void.

您可以使用普通搜索 ! 字符

代码

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "Hi, I'm odd!";
    int exclamationCheck = 0;
    int i=0;
    while (str[i]!='[=10=]'){
        if (str[i]=='!'){
            exclamationCheck = 1;
            break;
        }
        i++;
    }
    printf("exclamationCheck = %d\n", exclamationCheck);
    return 0;
}