C语言字符函数isalnum()和iscntrl()详解

  isalnum() 函数用于检查所传的字符是否是字母或者十进制数字。它的函数原型如下:

  _CRTIMP int __cdecl isalnum(int _C);

  返回值为非零(真)表示参数c是字母或者十进制数字,返回值为零(假)表示参数c既不是十进制数字,也不是字母。

  下面通过一个简单的例子来演示它的用法。

#include <stdio.h>
#include <ctype.h>

int main()
{
   int var1 = 'a';
   int var2 = '8';
   int var3 = '\t';
   int var4 = ' ';

   if( isalnum(var1) )
   {
      printf("var1 = |%c| 是字母数字\n", var1 );
   }
   else
   {
      printf("var1 = |%c| 不是字母数字\n", var1 );
   }
   if( isalnum(var2) )
   {
      printf("var2 = |%c| 是字母数字\n", var2 );
   }
   else
   {
      printf("var2 = |%c| 不是字母数字\n", var2 );
   }
   if( isalnum(var3) )
   {
      printf("var3 = |%c| 是字母数字\n", var3 );
   }
   else
   {
      printf("var3 = |%c| 不是字母数字\n", var3 );
   }
   if( isalnum(var4) )
   {
      printf("var4 = |%c| 是字母数字\n", var4 );
   }
   else
   {
      printf("var4 = |%c| 不是字母数字\n", var4 );
   }

   return(0);
}

  分别定义4个变量,一个字母,一个数字,一个制表符,一个空字符,输出结果如下:

  前两个变量返回值为真,后两个变量返回值为假。

  isalnum() 函数可以同时检测字母或者数字,如果要单独检测字母或者数字的的话,库函数中还提供了专门的检测函数isalphaisdigit,他们的函数原型如下:

  _CRTIMP int __cdecl isalpha(int _C);
  _CRTIMP int __cdecl isdigit(int _C);

  将上面代码中的函数替换为这两个函数。

#include <stdio.h>
#include <ctype.h>

int main()
{
   int var1 = 'a';
   int var2 = '8';

   if( isalpha(var1) )
   {
      printf("var1 = |%c| 是字母\n", var1 );
   }
   else
   {
      printf("var1 = |%c| 不是字母\n", var1 );
   }

   if( isdigit(var2) )
   {
      printf("var2 = |%c| 是数字\n", var2 );
   }
   else
   {
      printf("var2 = |%c| 不是数字\n", var2 );
   }

   return(0);
}

  运行结果如下:

  C语言标准库里面还提供了控制字符检测函数iscntrl

  所谓 “控制字符”是指那些具有某种特殊功能、不会显示在屏幕上、不会占用字符位置的特殊字符。在ASCII码表中,前32个字符就是控制字符。

  控制字符检测函数iscntrl原型如下:

     _CRTIMP int __cdecl iscntrl(int _C);

  如果 c 是一个控制字符,则该函数返回非零值,否则返回 0。

  下面通过一段简单的代码演示它的用法。

#include <stdio.h>
#include <ctype.h>

int main()
{
   int i = 0, j = 0;
   char str1[] = "abc \a def \t gh";
   char str2[] = "123 \n 456";

   /* 输出字符串,直到控制字符 \a */
   while( !iscntrl(str1[i]) )
   {
      putchar(str1[i]);
      i++;
   }

   /* 输出字符串,直到控制字符 \n */
   while( !iscntrl(str2[j]) )
   {
      putchar(str2[j]);
      j++;
   }

   return(0);
}

  定义两个字符串,中间有控制字符,然后打印字符串的时候检测字符是否为控制字符,如果是控制字符就结束打印。输出结果如下:

  同输出结果可以看到只打印了控制符前面的字符。

  与控制字符相对的就是可打印字符,可打印字符是指那些会显示在屏幕上、会占用字符位置的“普通”字符。在ASCII码表中编码32-127的字符都是可打印字符。可打印字符就是经常用到的数字、字母、符号等这些在屏幕上可以看见的字符。

到此这篇关于C语言字符函数isalnum()和iscntrl()详解的文章就介绍到这了,更多相关C语言isalnum()和iscntrl()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言中isalnum()函数和isalpha()函数的对比使用

    C语言isalnum()函数:判断字符是否为英文字母或数字 头文件: #include <ctype.h> isalnum() 用来判断一个字符是否为英文字母或数字,相当于 isalpha(c) || isdigit(c),其原型为: int isalnum(int c); [参数]c 为需要检测的字符. [返回值]若参数c 为字母或数字,若 c 为 0 ~ 9  a ~ z  A ~ Z 则返回非 0,否则返回 0. 注意,isalnum()为宏定义,非真正函数. [实例]找出str 字符串

  • C语言的字符函数和字符串函数详解

    目录 一.字符&字符串函数 1.strlen--求字符串长度 2.1.strcpy--拷贝字符串 2.2.strcat--追加字符串/链接字符串 2.3.strcmp--字符串比较 2.4.strncpy--受限的字符串拷贝 2.5.strncat--受限连接字符串 2.6.strncmp--受限的比较字符串 总结 一.字符&字符串函数 1.strlen--求字符串长度 释:是所求‘\0’之前的字符个数.库函数类型-size_t(const char*)    size_t == unsi

  • 深入了解C语言字符函数和字符串函数

    目录 前言 求字符串长度 strlen介绍 strlen直接使用: strlen模拟实现: strlen对比sizeof 长度不受限制的字符串函数 strcpy 直接使用 模拟实现: strcat 直接使用: 模拟实现: strcmp 运行结果: 模拟实现: 长度受限制的字符串函数 strncpy strncat strncmp 字符串查找 strstr strtok 字符分类函数 内存操作函数 memcpy memmove memcmp 总结 前言 C语言中对字符串的处理很是繁琐,但是C语言本

  • C语言字符函数isalnum()和iscntrl()详解

      isalnum() 函数用于检查所传的字符是否是字母或者十进制数字.它的函数原型如下: _CRTIMP int __cdecl isalnum(int _C);   返回值为非零(真)表示参数c是字母或者十进制数字,返回值为零(假)表示参数c既不是十进制数字,也不是字母.   下面通过一个简单的例子来演示它的用法. #include <stdio.h> #include <ctype.h> int main() { int var1 = 'a'; int var2 = '8';

  • C语言 module_init函数与initcall案例详解

    module_init这个函数对做驱动的人来说肯定很熟悉,这篇文章用来跟一下这个函数的实现. 在include/linux/init.h里面有module_init的定义,自然,因为一个module可以在内核启动时自动加载进内核,也可以由我们手动在需要时加载进内核,基于这种场景,内核使用了MODULE这个宏,见代码: #ifndef MODULE #ifndef __ASSEMBLY__ ... #define __define_initcall(level,fn,id) \ static in

  • C语言qsort()函数的使用方法详解

    目录 前言 1.参数含义 1.首元素地址base 2.元素个数num 3.元素大小size 4.自定义比较函数compar 2.使用方式 1.头文件 2.compar的实现 3.整体代码 总结 前言 qsort()函数(quick sort)是八大排序算法中的快速排序,能够排序任意数据类型的数组其中包括整形,浮点型,字符串甚至还有自定义的结构体类型. 1.参数含义 void qsort (void* base, size_t num, size_t size,int (*compar)(cons

  • C语言 map函数的基础用法详解

    目录 map map具体操作 总结 map 有N个学生的姓名name和学号ID,要求给你一个学生的name求查找他的ID. 简单做法是定义 string name [ N ] 和 int ID[ N ] 存储信息,然后在name [ ] 中查找这个学生,找到后输出他的ID.但是这样的缺点是需要查找所有的name [ N ],时间复杂度是O( N ),效率低下. 利用 STL 中 map容器 可以快速实现查找,复杂度是O( log 2 N ). map是关联容器,它实现从键(key)到值(valu

  • C语言main()函数的参数问题详解

    #include<stdio.h> void main(int argc, char* argv[]) { while (argc > 1) { ++argv; printf("%s\n", argv); --argc; } } #include<stdio.h> #include<stdlib.h> void main(int argc, char* argv[]) { int i; printf("The number of st

  • C语言实现字符串字符反向排列的方法详解

    目录 前言 非递归方法 1.循环实现 2.函数实现 递归方法 1.递归方法 2.递归方法 小结 前言 重点的话说在前头,注意不是逆序打印 今天写题,碰到一个很好的题,在这里来个大家做个分享,我会用多种方法来解决 题目具体内容如下: 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列,不是逆序打印. 要求:不能使用C函数库中的字符串操作函数 但是这里我不会仅仅局限于题目的要求 非递归方法 1.循环实现 1.1循环实现(sizeof) #include <stdio.h> int mai

  • C语言学习进阶篇之万字详解指针与qsort函数

    目录 前言 函数指针 代码一 代码二 函数指针数组 函数指针数组的用途 计算器的基本代码 函数指针实现简单的计算机 函数指针数组实现简单计算机 指向函数指针数组的指针 回调函数 简单的冒泡排序 冒泡排序的优化 qsort函数 qsort函数介绍 qsort实现冒泡排序 qsort排序结构数据 模拟实现qsort函数 写在最后 前言 前面学到了字符指针,指针数组是一个存储指针的数组,数组指针是一个指向函数的指针,数组参数和指针参数.其中不乏有很多需要注意的知识点,例如:&数组名和数组名表示的含义,

  • C语言字符函数、内存函数功能及实现代码

    C语言字符函数.内存函数 功能及实现 strlen函数(求字符串长度)注意点模拟实现 strcpy函数(字符串拷贝函数)注意点模拟实现 strcat函数(字符串衔接函数)注意点模拟实现 strcmp函数注意点模拟实现 strstr函数模拟实现 strtok函数使用 strerror函数使用 memcpy函数注意点模拟实现 memmove函数注意点模拟实现 memset函数注意点 strlen函数(求字符串长度) 统计字符串长度直到\0为止 注意点 1.属于<string.h>库 2.参数为字符

  • C语言数据输入与输出实例详解

    C语言数据输入与输出实例详解 1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及网络,而输出的终端可以是控制台,文件甚至是网页. 2 数据输出 从第一个c语言程序中,就使用了跨平台的库函数printf实现将一段文字输出到控制台,而实际上,printf()不仅可以将数据按照指定的格式输出到控制台,还可以是网页或者是指定的文件中,printf()函数执

  • C语言中的正则表达式使用示例详解

    正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).正则表达式是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 在c语言中,用regcomp.regexec.regfree 和regerror处理正则表达式.处理正则表达式分三步: 编译正则表达式,regcomp: 匹配正则表达式,regexec: 释放正则表达式,regfree. 函数原型 /* 函数说明:Regcomp将正则表达式字符串regex编译

随机推荐