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() 函数可以同时检测字母或者数字,如果要单独检测字母或者数字的的话,库函数中还提供了专门的检测函数isalpha 和 isdigit,他们的函数原型如下:

  _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的字符都是可打印字符。可打印字符就是经常用到的数字、字母、符号等这些在屏幕上可以看见的字符。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言字符函数与字符串函数详解

    目录 本章重点 前言 1.strlen函数 注意点1 注意点2 2.strcpy 注意点1: 注意点2: 注意点3: 注意点4: 总结 本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 1.求字符串长度 strlen 2.长度不受限制的字符串函数 strcpy ,strcat, strcmp 3.长度受限制的字符串函数 strncpy,strncat ,strncmp 4.字符串查找 strstr,strtok 5.错误信息报告 strerror 6.字符操作 7.内存操作函数 mem

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

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

  • 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语言字符函数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语言字符函数、内存函数功能及实现代码

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

  • 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 v

  • C语言浮点函数中的modf和fmod详解

    modf函数可以提取出浮点数的整数部分和小数部分.fmod函数可以返回两个浮点数相除的余数.它们的函数原型如下: double __cdecl modf(double _X,double *_Y); double __cdecl fmod(double _X,double _Y); 这两个函数的功能看起来都挺简单的,但是为什么在C语言库中还要专门搞一个函数来计算呢?在使用这两个函数之前,首先看一个简单的浮点数相关的例子. int main () { int i; float j=1.0; for

  • C语言进阶教程之字符函数&字符串函数

    目录 1.strlen 1.1.三种模拟实现 2.长度不受限制的字符串函数 2.1.strcpy 2.1.1.模拟实现 2.2.strcat 2.2.1.模拟实现 2.3.strcmp 2.3.1.模拟实现 3.长度受限制的字符串函数 3.1.strncpy 3.1.1.模拟实现 3.2.strncat 3.2.1.模拟实现 3.3.strncmp 3.3.1.模拟实现 4.字符串查找 4.1.strstr 4.1.1.模拟实现 4.2.strtok 5.错误信息报告 5.1.strerror

  • C语言之函数返回值与参数传递案例教程

    C语言函数返回值与参数传递 一:参数传递 C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式. 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: int test(int x,int y) { x=2*y; return x; } int main(void) { int a=0,b=5; printf("%d,%d\n\r",test(a,b),a); return 0; } 运行结果为: 10,0 即传值方式只可以将实参传递给函数,不可以改变实参本身.

  • C语言字符串函数,字符函数,内存函数使用及模拟实现

    目录 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp 字符串查找函数 strstr strtok strerror 字符函数 字符分类函数 字符转换函数 内存操作函数 memcpy memmove memcmp memset 求字符串长度 strlen 函数功能 字符串长度,求一个字符串中字符的个数(不包含’\0’). 函数参数: size_t strlen( const ch

  • Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include<unistd.h> char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小. 普通的用法会是这样: #define MAX_SIZE 255 char path(MAX_SIZE); getcwd(path,sizeof(path)); puts(path);

随机推荐