51单片机第7步_ctype.h库函数

ops/2024/9/23 18:26:40/

本章重点学习ctype.h库函数

//介绍C51库函数ctype.h的使用;

#include <REG51.h>  //包含头文件REG51.h,使能51内部寄存器;

#include <ctype.h>

//bit isalpha( unsigned char value );

//检查输入参数value是否为英文字母,若是英文字母,则返回1,若不是英文字母,则返回0;

//bit isalnum(unsigned char value);

//检查输入参数value是否为英文字母或数字字符,若是英文字母或数字字符,则返回1;

//若不是英文字母或数字字符,则返回0;

//bit iscntrl (unsigned char value);

//控制字符的值域:0x00<=value<=0x1f或value=0x7f;

//若输入参数value为控制字符,则返回1,否则,返回0;

//isgraph (unsigned char value);

//"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

//若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

//isprint (unsigned char value);

//"打印字符"的值域:0x20<=value<=0x7e,包含空格字符值0x20;

//若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

//bit ispunct(unsigned char);

//输入参数:标点,空格或格式字符号;

//标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

//左右小括号( () ),左右中括号([]),左右大括号({});

//格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

//相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

//英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

//若输入参数为空格或32个标点和格式字符之一,则返回1;

//bit isdigit(unsigned char value);

//若输入字符为0~9的ascii码,则返回1,否则返回0;

//bit islower(unsigned char value);

//若输入参数value为小写英文字母,则返回1,否则返回0;

//bit isupper (unsigned char value);

//若输入参数value为大写英文字母,则返回1,否则返回0;

//bit isspace (unsigned char value);

//输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

//回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

//若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

//bit isxdigit (unsigned char value);

//输入参数:'0'~'9'或'A'~'F'或'a'~'f';

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

//unsigned char toint (unsigned char value value);

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

//unsigned char tolower (unsigned char value);和_tolower(c);

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

//_tolower(c)相当于( (c)-'A'+'a' );

//unsigned char toupper (unsigned char value);和_toupper(c);

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' );

//toascii(c);相当于( (c) & 0x7F );

//将第7位以上的所有位设置为0,使其结果值<=127,即为ascii码,不常使用;

//若输入参数为字节型数据,则只将最高位设置为0;

#include <stdio.h>  //包含头文件stdio.h

                    //_getkey();从串口读入一个字符;

                    //putchar();向串口发送一个字节;

                    //printf();向串口发送一串字节;

//函数功能:测试isalpha()函数;

void test_isalpha()

{ char s[]="a$bcd";

  if( isalpha(s[0]) )  //若输入参数是英文字母,则执行下面语句;

     printf( "isalpha('a')=1;\n" );  //输出:"isalpha('a')=1;"

  if( !isalpha(s[1]) )  //若输入参数不是英文字母,则执行下面语句;

     printf( "isalpha('$')=0;\n" );  //输出:"isalpha('$')=0;"

}

//函数功能:测试isalnum()函数;

void test_isalnum()

{ char s[]="b1#23acd";

  if( isalnum(s[0]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('b')=1;\n" );  //输出:"isalnum('b')=1;"

  if( isalnum(s[1]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('1')=1;\n" );  //输出:"isalnum('1')=1;"

  if( !isalnum(s[2]) )  //若输入参数既不是英文字母也不是数字字符,则执行下面语句;

     printf( "isalnum('#')=0;\n" );  //输出:"isalnum('#')=0;"

}

//函数功能:测试iscntrl()函数;

void test_iscntrl()

{ unsigned char value;

  bit return_bit_value;

  value=0x7f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

                               //控制字符的值域:0x00<=value<=0x1f或value=0x7f;

  if(return_bit_value) printf( "iscntrl(0x7f)=1;\n" );  //输出:"iscntrl(0x7f)=1;"

  value=0x1f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x1f)=1;\n" );  //输出:"iscntrl(0x1f)=1;"

  value=0x00;

  return_bit_value=iscntrl(value);  //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x00)=1;\n" );  //输出:"iscntrl(0x00)=1;"

  value=0x20;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(!return_bit_value) printf( "iscntrl(0x20)=0;\n" );  //输出:"iscntrl(0x20)=0;"

}

//函数功能:测试isgraph()函数;

void test_isgraph()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isgraph(value);

     //若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

     //"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

  if(return_bit_value) printf( "isgraph(0x7e)=1;\n" );  //输出:"isgraph(0x7e)=1;"

  value=0x21;

  return_bit_value=isgraph(value);

  if(return_bit_value) printf( "isgraph(0x21)=1;\n" );   //输出:"isgraph(0x21)=1;"

  value=' ';

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x20)=0;\n" );  //输出:"isgraph(0x20)=0;"

  value=0x7f;

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x7f)=0;\n" );   //输出:"isgraph(0x7f)=0;"

}

//函数功能:测试isprint()函数;

void test_isprint()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isprint(value);

     //若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

     //可打印字符的值域:0x20<=value<=0x7e,包含空格字符值0x20;

  if(return_bit_value) printf( "isprint(0x7e)=1;\n" );//输出:"isprint(0x7e)=1;"

  value=' ';

  return_bit_value=isprint(value);

  if(return_bit_value) printf( "isprint(0x20)=1;\n" );   //输出:"isprint(0x20)=1;"

  value=0x7f;

  return_bit_value=isprint(value);

  if(!return_bit_value) printf( "isprint(0x7f)=0;\n" );  //输出:"isprint(0x7f)=0;"

}

//函数功能:测试isdigit()函数;

void test_isdigit()

{ unsigned char value;

  bit return_bit_value;

  value='0';

  return_bit_value=isdigit(value);  //若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(return_bit_value)printf( "isdigit('0')=1;\n" );  //输出:"iscntrl('0')=1;"

  value=0;

  return_bit_value=isdigit(value);//若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(!return_bit_value)printf( "isdigit(0)=0;\n" ); //输出:"iscntrl(0)=0;"

}

//函数功能:测试ispunct()函数;

void test_ispunct()

{ unsigned char value;

  bit return_bit_value;

  value='~';

  return_bit_value=ispunct(value);

    //输入参数:标点,空格或格式字符号;

    //标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

    //左右小括号( () ),左右中括号([]),左右大括号({});

    //格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

    //相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

    //英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

    //若输入参数为空格或32个标点和格式字符之一,则返回1;

  if(return_bit_value)printf( "ispunct('~')=1;\n" );  //输出:"ispunct('~')=1;"

  value='`';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('`')=1;\n" );   //输出:"ispunct('`')=1;"

  value='@';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('@')=1;\n" );  //输出:"ispunct('@')=1;"

  value=' ';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct(' ')=1;\n" );  //输出:"ispunct(' ')=1;"

}

//函数功能:测试islower()函数;

void test_islower()

{ unsigned char value;

  bit return_bit_value;

  value='a';

  return_bit_value=islower(value);

      //若输入参数value为小写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "islower('a')=1;\n" ); //输出:"islower('a')=1;"

  value='A';

  return_bit_value=islower(value);

  if(!return_bit_value)printf( "islower('A')=0;\n" );//输出:"islower('A')=0;"

}

//函数功能:测试isupper()函数;

void test_isupper()

{ unsigned char value;

  bit return_bit_value;

  value='B';

  return_bit_value=isupper(value);

   //若输入参数value为大写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "isupper('B')=1;\n" );

  value='b';

  return_bit_value=isupper(value);

  if(!return_bit_value)printf( "isupper('b')=0;\n" );

}

//函数功能:测试isspace()函数;

void test_isspace()

{ unsigned char value;

  bit return_bit_value;

  value='\t'; //将水平制表符(0x09,即'\t')保存到value中;

  return_bit_value=isspace(value);

  //输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

  //回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

  //若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

  if(return_bit_value)printf( "isspace(0x09)=1;\n" );

  value='\n';   //换行符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0a)=1;\n" );

  value='\v';   //垂直制表符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0b)=1;\n" );

  value='\f';   //换页符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0c)=1;\n" );

  value='\r';   //回车符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0d)=1;\n" );

  value=' ';   //空格符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(' ')=1;\n" );

}

//函数功能:测试isxdigit()函数;

void test_isxdigit()

{ unsigned char value;

  bit return_bit_value;

  value='A';

  return_bit_value=isxdigit(value);

 //若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

  if(return_bit_value)printf( "isxdigit('A')=1;\n" );

  value='a';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('a')=1;\n" );

  value='0';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('0')=1;\n" );

  value='f';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('f')=1;\n" );

  value='G';

  return_bit_value=isxdigit(value);

  if(!return_bit_value)printf( "isxdigit('G')=0;\n" );

}

//函数功能:测试toint()函数;

void test_toint()

{ unsigned char return_bit_value;

  return_bit_value=toint('9');

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

  printf("toint('9')=%#bx\n",return_bit_value);  //输出:"toint('9')=0x09;"

  return_bit_value=toint('A');

  printf("toint('A')=%#bx\n",return_bit_value); //输出:"toint('A')=0x0a;"

  return_bit_value=toint('a');

  printf("toint('a')=%#bx\n",return_bit_value);   //输出:"toint('a')=0x0a;"

}

//函数功能:测试tolower()函数;

void test_tolower()

{ unsigned char return_bit_value;

  return_bit_value=tolower('A');

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

  printf("tolower('A')=%c\n",return_bit_value);

  return_bit_value=_tolower('Z');   //相当于( (c)-'A'+'a' )

  printf("_tolower('Z')=%c\n",return_bit_value);

}

//函数功能:测试toupper()函数;

void test_toupper()

{ unsigned char return_bit_value;

  return_bit_value=toupper('a');

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' )

  printf("toupper('a')=%c\n",return_bit_value);

  return_bit_value=_toupper('z');   //相当于( (c)-'a'+'A' )

  printf("_toupper('z')=%c\n",return_bit_value);

}

//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

void Serial_Port_Initialization()

{ SCON  = 0x50;  //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI

                 //SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;

                 //REN=1,使能接收;

  TMOD |= 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00

                //GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电平,才

                //可以启动Timer;

                //M11:M10=10,选择方式2,8位自动重装载; 

  TH1   = 221;  //TH1:  reload value for 1200 baud @ 16MHz

  TR1   = 1;    //启动Timer1;

  TI    = 1;    //发送UART的第一个字节,为下次发送做准备;

}

void main(void)

{ Serial_Port_Initialization(); //初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

  for(;;)

     { test_isalpha();  //测试isalpha()函数;

   test_isalnum();    //测试isalnum()函数;

   test_iscntrl();     //测试iscntrl()函数;

   test_isdigit();     //测试isdigit()函数;

   test_isgraph();    //测试isgraph()函数;

   test_isprint();     //测试isprint()函数;

   test_ispunct();    //测试ispunct()函数;

   test_islower();    //测试islower()函数;

   test_isupper();   //测试isupper()函数;

   test_isspace();   //测试isspace()函数;

   test_isxdigit();   //测试isxdigit()函数;

   test_toint();     //测试toint()函数;

   test_tolower();   //测试tolower()函数;

   test_toupper();   //测试toupper()函数;

 }

}


http://www.ppmy.cn/ops/53637.html

相关文章

比较Zig、Rust和C++

比较Zig、Rust和C这三种编程语言&#xff0c;我们可以从以下几个关键维度来进行&#xff1a; 设计理念 表格 语言 设计理念 Zig 简洁性、模块化、避免常见错误 Rust 内存安全、并发性、性能 C 性能优化、资源控制、可扩展性 内存安全 Zig通过严格的编译时检查、可选…

Windows 10,11 Server 2022 Install Docker-Desktop

docker 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 docker-compose Compose 是用于定义和运行…

深入浅出:npm常用命令详解与实践

在JavaScript开发领域&#xff0c;npm&#xff08;Node Package Manager&#xff09;扮演着至关重要的角色。它是Node.js的默认包管理器&#xff0c;负责处理项目的依赖关系、脚本执行、版本控制等多种任务。本文旨在深入浅出地介绍npm的一些常用命令及其实际应用场景&#xff…

【乐吾乐2D可视化组态编辑器】连线

1 连线的绘制 1.1 钢笔绘制连线 1.1.1 曲线、线段、直线、脑图曲线 开始&#xff1a;单击左键 暂停&#xff1a;单击右键 或 enter 结束&#xff1a;esc 乐吾乐2D可视化组态编辑器demo&#xff1a;https://2d.le5le.com/ 1.1.2 横线 按下快捷键shift,点击鼠标左键绘制…

软件构造 | 期末查缺补漏

软件构造 | 期末查缺补漏 总体观 软件构造的三维度八度图是由软件工程师Steve McConnell提出的概念&#xff0c;用于描述软件构建过程中的三个关键维度和八个要素。这些维度和要素可以帮助软件开发团队全面考虑软件构建的方方面面&#xff0c;从而提高软件质量和开发效率。 下…

SpringMVC常用功能实现

1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> 2. 端口配置 server:port: 8080 3. 统一功能处理 3.1 拦截器 3.1.1 生成 package com.exa…

【原创实现 设计模式】Spring+策略+模版+工厂模式去掉if-else,实现开闭原则,优雅扩展

1 定义与优点 1.1 定义 策略模式&#xff08;Strategy Pattern&#xff09;属于对象的⾏为模式。他主要是用于针对同一个抽象行为&#xff0c;在程序运行时根据客户端不同的参数或者上下文&#xff0c;动态的选择不同的具体实现方式&#xff0c;即类的行为可以在运行时更改。…

简单的本地局域网的前后端接口联调

由于项目被赶进度了&#xff0c;急于前后端联调接口&#xff0c;但是我又没钱买服务器&#xff08;主要我也不会部署&#xff09;&#xff0c;所以我这里就紧急找一个后端的大神朋友请教了一下&#xff1a;苏泽SuZe-CSDN博客 提示&#xff1a;这里不讲后端怎么写接口、前端怎么…