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

标签 c string

在 C 中接受命令行参数时,有什么方法可以确保字符串只包含字母(即没有 letters 数字或符号)而不转换为 int?有内置函数吗?

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

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

最佳答案

对于“仅字母”,使用 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() .等等

关于检查 C 字符串中的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493086/

相关文章:

c - 当我删除第一个节点时,它会生成无限循环错误

c - 我如何使用长整型作为 glib 哈希表中的键?

c - Lex 不区分大小写的单词检测

将文件扩展名连接到 C 中的基本名称

java - 查找字符串中的字符在java中重复了多少次

Java/RegEx - 模式否定不起作用

C - 解析带有未知数量参数的命令行

c++ - 在 C 中制作一个基本的 shell 并且在管道/ fork 方面遇到麻烦

C++试图返回一个 double 组的字符串(有点)

c - 为什么这个汇编代码会失败?