检查C字符串中的某些字符

时间:2011-09-20 23:46:03

标签: c string

当接受C中的命令行参数时,有没有办法确保字符串只包含字母(即没有字母数字或符号)而不转换为int?是否有内置函数?

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

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

2 个答案:

答案 0 :(得分:6)

对于“仅限字母”,请使用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()更加精确。等

答案 1 :(得分:0)

只需扫描字符串的每个字符,如果找到的字符不是大写或小写字母,请跳出标记标记的循环。

示例:

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