c - C语言区分字母和整数

标签 c char

请注意,我并没有像 ctype.h 中的 isalpha() 这样的函数那样尝试区分单个数字和字母(或其他字符)

我正在尝试区分整数和字母表。

问题是字母表在 C 中也被视为整数,我想不出出路。

例如:如果输入是 字母a, 它与整数 97 的 'a' 相同。

我需要确定输入的是“a”还是 97。

我尝试这样做,但发现它根本行不通。

int a;
scanf("%d", &a);
if( (a>='A' && a<='Z') || (a>='a' && a<='z') )
{
   printf("\nAlphabet");
}

最佳答案

检查scanf()的返回值

int val;
int chk = sscanf("a", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

int val;
int chk = sscanf("97", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

int val1, val2, val3;
int chk = sscanf("97 b 99", "%d%d%d", &val1, &val2, &val3);
if (chk == 3) /* all ok */;
if (chk == 2) /* only val1 and val2 were assigned a value */;
if (chk == 1) /* only val1 was assigned a value */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

关于c - C语言区分字母和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39119000/

相关文章:

数组比较(逐个元素)

c - 原子 if(A && B)?

c# - 将位串转换为字符

c - 获取多维数组中的一个空间

c - 如何使用 ptrace 获取 char*

无法读取我写的文件(C 编程学生数据库)

c - 使用 Make 编译 C 代码时出错 'ld: symbol(s) not found for architecture x86_64'

c++ - 如何检测文本文件中的标签?

c - 使用 char 数组减去 2 个数字

c++ - 如果它是数字 c++,则测试将 int 转换为 char