Проверка на наличие определенных символов в строке C - PullRequest
0 голосов
/ 21 сентября 2011

Принимая аргументы командной строки в C, есть ли способ убедиться, что строка содержит только буквы (то есть, нет букв цифр или символов) без преобразования в int? Есть ли для этого встроенная функция?

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

   char *input = argv[1];
   if (/* input contains anything but upper and lowercase letters */)
      return 1;
   ...
}

Ответы [ 2 ]

6 голосов
/ 21 сентября 2011

Для «только букв» используйте isalpha() из <ctype.h>.Конечно, вы должны заключить его в функцию:

#include <stdbool.h>
#include <ctype.h>

bool all_alpha(const char *str)
{
    char c;

    while ((c = *str++) != '\0')
        if (!isalpha(c))
            return false;
    return true;
}

Обратите внимание, что isalpha() будет возвращать разные результаты в зависимости от текущей локали.Возможно, вы захотите использовать isalnum() (буквенно-цифровые символы) вместо просто алфавитов;Вы можете быть более точным с islower() или isupper().И т.д.

0 голосов
/ 21 сентября 2011

Просто просмотрите каждый символ строки и, если найден символ, который не является прописным или строчным алфавитом, вырвитесь из цикла, отмечая флаг.

Пример:

#include <stdio.h>


int main (int argc, char *argv[])
{
  int i, flag;

  for (i=0, flag = 1; argv[1][i] != '\0'; i++)
  {
    if (!isalpha (toupper (argv[1][i])))
    {
      flag = 0;
      break;
    }
  }

  if (flag == 1)
    printf ("\n%s contain only alphabets\n", argv[1]);
  else
    printf ("\n%s containg other symbols excpet alphabets\n", argv[1]);

  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...