tolower c语言,tolower()
int tolower ( int c );
tolower() 函数用来将大写字母转换为小写字母。
只有当参数 c 是一个大写字母,并且存在对应的小写字母时,这种转换才会发生。
在默认情况下,大写字母包括:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
小写字母包括:
a b c d e f g h i j k l m n o p q r s t u v w x y z
参数
c
要转换的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)。
返回值
如果转换成功,那么返回与 c 对应的小写字母;如果转换失败,那么直接返回 c(值未变)。
注意,返回值为 int 类型,你可能需要隐式或者显式地将它转换为 char 类型。
实例
将一个字符串中的大写字母转换为小写字母。
#include
#include
int main ()
{
int i=0;
char str[]="Java C++ Python GoLang\n";
char c;
while (str[i])
{
c=str[i];
putchar (tolower(c));
i++;
}
return 0;
}
运行结果:
java c++ python golang
关于大小写字母
人们通常认为只有"acb...xyz"才是小写字母,只有"ABC...XYZ"才是大写字母,其实这是不对的。大小写字母并不是固定的,不同的语言文化可能会包含不同的大小写字母,例如在“简体中文”环境中,西里尔文БГЁ、希腊文ΣΩΔΨΦ(数学物理公式中常用希腊字母)等都将成为大写字母,它们对应的小写字母是бгё - σωδψφ。
我们可以通过 setlocale() 函数改变程序的地域设置,让程序使用不同的字符集,从而支持不同的语言文化。
在默认的地域设置(默认为"C")中,C语言通常使用 ASCII 编码,能较好地支持英文,此时的大写字母包括:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
小写字母包括:
a b c d e f g h i j k l m n o p q r s t u v w x y z
在其它地域设置中,可能会使用 GBK(简体中文)、BIG5(繁体中文)、Shift-JIS(日文)、Unicode(世界统一码) 等更加复杂的编码,它们包含了更多的大小写字母。
也就是说,一个字符是否是大写字母或者小写字母和程序的地域设置有关,不同的地域设置会包含不同的大小写字母。
字母一定要区分大小写吗?
我们通常认为,一个字母要么是小写字母,要么是大写字母;并且一个小写字母必定对应一个大写字母,反之亦然。这种说法虽然适用于默认的地域设置(默认为"C"),但是并不一定适用于其它的地域设置。
以 Windows 下的“简体中文”环境为例,拼音āōūǖ都将成为小写字母,但是它们没有对应的大写字母。Windows 下的“简体中文”环境使用 GBK 编码,该编码并没有包含ĀŌŪǕ这些大写形式。
罗马数字ⅲⅵⅶⅸ和ⅢⅥⅦⅨ也会被视为字母,并且从视觉上看起来是大小写对应的。其实不然,对于 Windows 来说,ⅲⅵⅶⅸ和ⅢⅥⅦⅨ都仅仅是字母而已,并没有所谓的“大小写”形式;换句话说,它们既不是大写字母,也不是小写字母,仅仅是字母而已。
以上说法仅适用于 Windows,在 Linux 和 Mac OS 下使用“简体中文”情况会有所不同:
āōūǖ会有对应的大写字母ĀŌŪǕ,因为 Linux 和 Mac OS 下的“简体中文”使用 Unicode 字符集(严格来说是 UTF-8 编码),该字符集包含了世界上所有的字符。
在 Mac OS 下,ⅲⅵⅶⅸ和ⅢⅥⅦⅨ根本不会被视为字母;在 Linux 下,ⅲⅵⅶⅸ被视为小写字母,ⅢⅥⅦⅨ被视为大写字母。
站在专业角度看问题
C语言标准规定,在默认的"C"地域设置中,只有 islower() 或者 isupper() 返回“真”的字母才会被视为字母;也就是说,一个字母要么是小写字母,要么是大写字母。
但是对于其它的地域设置,C语言并没有这种规定,一个字母可以是 islower() 或者 isupper() 返回“真”的字符,也可以是被当前语言环境显式地(刻意地)指定为字母的字符,例如罗马数字ⅲⅵⅶⅸ和ⅢⅥⅦⅨ。但是有一个原则,被指定为字母的字符一定不能是 iscntrl()、isdigit()、ispunct()、isspace() 返回“真”的字符。
对于 tolower(),仅当有且只有一个对应的小写字母时,这种转换才能成功;如果没有对应的小写字母,或者有多个对应的小写字母,那么转换失败。转换成功返回对应的小写字母,转换失败直接返回 c(值未变)。
拓展阅读
我们在编写C语言程序时,通常使用 char 类型来表示一个字符,而 tolower() 的参数却是 int 类型,这是为什么呢?请猛击《为什么中的函数参数都是int类型》一文了解详情。
tolower c语言,tolower()相关推荐
- C语言tolower函数介绍、示例和实现
文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的tolower函数的实现方法 6.获取视频教程 7.版权声明 C语言tolower函数用于把大写字母转换为小写字母. 在本文 ...
- java实现c语言的函数_C语言tolower函数介绍、示例和实现
C语言tolower函数用于把大写字母转换为小写字母. 在本文中,我们先来介绍tolower函数的使用方法,然后编写一个自定义的_tolower函数,实现与tolower函数相同的功能. 1.包含头文 ...
- tolower函数什么意思c语言,tolower ()在c语言中是什么意思
满意答案 ifucse 2013.04.02 采纳率:47% 等级:12 已帮助:9719人 函数名: tolower 功 能: 把字符转换成小写字母,非字母字符不做出处理 头文件:在VC6.0 ...
- C语言函数:tolower()、toupper字符大小写转换函数。
C语言函数:tolower().toupper字符大小写转换函数. int toupper( int c) int tolower( int c) tolower():将字母转为小写. toupper ...
- C语言isupper,tolower,islower,toupper混合使用题
程序运行结果:Ab2Cd3eF4 答案不是 aB2cD3Ef4 的原因是:tolower('A')=a;tolower('a')=a;但是未赋值给*p,所以无效果:而对于整数有效是因为(*p)++ ...
- 头文件 ctype.h 以及函数 isalpha() tolower()
ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符.控制字 ...
- C语言再学习 -- ctype.h字符判断函数
参看:ctype.h 百度百科 ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特 ...
- go 变量大写_go语言如何将大写转小写,c语言字符串小写转大写
go语言如何将大写转小写围棋怎么把大写字母变成小写字母,go语言中大写转换为小写的方法:首先,创建一个go样本文件:然后定义一个字符串类型的变量:然后使用ToLower函数将所有大写的变量字符转换成小 ...
- c语言中字母大写转小写,C语言中字母大小写转换的简单操作
大写字母要转换小写字母,要怎么操作呢?而在C语言开发中,我们经常会遇到这样或者那样的问题,别着急,爱站技术频道为你细细道来C语言中字母大小写转换的简单操作. C语言tolower()函数:将大写字母转 ...
- 用C语言编写简化版银行系统:ATM取款机(数组版)
问题描述: 该银行储蓄系统的目标.结合前面的基础上开始设计一个c版银行储蓄系统,前面刚学完c言的基本操作以及自定义函数,还未涉及指针以及构体.这个简化版银行系统算是结合前面所学的知识的一个总结,适合初 ...
最新文章
- visual studio2010-2015编译部署caffe
- NDK android Error:Expected caller to ensure valid ABI: MIPS
- linux不能到达网关,linux – 在网关服务器上,netNS可以限制一个...
- 批量提取视频文件信息(文件大小及时长)并统计
- Codeforces Beta Round #11 B. Jumping Jack 思维
- centos 无法连接网络
- eval函数 php_PHP的一句话木马代码和函数eval的简介
- spring学习(8):log4j.properties 详解与配置步骤
- 【算法】剑指 Offer 63. 股票的最大利润
- Elasticsearch】es memory locking requested for process but memory is not locked
- 随想录(scrapy入门)
- 计算机专业改动漫设计,《计算机动漫与游戏制作》专业课程体系改革方案.doc...
- 在WINDOWS 2003上运行Apache服务
- SAP中销售订单中的条件类型修改控制问题配置分析
- 优客在线大学计算机基础答案,优课在线大学计算机基础答案.pdf
- 多任务让你走得更慢(很好,转自infoq)
- 深入浅出boot2.0第六章 数据库事务处理 隔离级别 传播行为
- LeetCode Daily challenge - Course Schedule
- 为什么设计稿是750px
- springboot+elasticsearch+bboss框架集成遇到的坑