Как проверить, содержит ли строка определенный символ? - PullRequest
1 голос
/ 28 сентября 2019

Я довольно новичок в программировании на C, как я могу проверить, что строка содержит определенный символ, например, если бы у нас было:

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

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

Итак, как мне установитьexclamationCheck с 1, если "!"присутствует и 0 если нет?Большое спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Используя 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: Что должно возвращать main () в C и C ++? int, а не void.

0 голосов
/ 28 сентября 2019

Вы можете использовать обычный поиск для ! символа с

Код

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