如何检查字符串是否包含某个字符?

时间:2019-09-28 13:26:13

标签: c arrays string char string-comparison

我对C编程还很陌生,如果我们有以下条件,我如何能够检查字符串是否包含特定字符:

void main(int argc, char* argv[]){

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

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

2 个答案:

答案 0 :(得分:1)

使用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] != '\0'; ++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

答案 1 :(得分:1)

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

代码

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

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