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

拥有回忆 提交于 2020-12-26 08:16:47

问题


I'm fairly new to C programming, how would I be able to check that a string contains a certain character for instance, if we had:

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

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

So with this, how would I set exclamationCheck with a 1 if "!" is present and 0 if it's not? Many thanks for any assistance given.


回答1:


By using strchr(), like this for example:

#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;
}

Output:

exclamationCheck = 1

If you are looking for a laconic one liner, then you could follow @melpomene's approach:

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

If you are not allowed to use methods from the C String Library, then, as @SomeProgrammerDude suggested, you could simply iterate over the string, and if any character is the exclamation mark, as demonstrated in this example:

#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;
}

Output:

exclamationCheck = 0

Notice that you could break the loop when at least one exclamation mark is found, so that you don't need to iterate over the whole string.


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




回答2:


You can use plain search for ! character with

Code

#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;
}


来源:https://stackoverflow.com/questions/58146750/how-do-i-check-if-a-string-contains-a-certain-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!