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()相关推荐

  1. C语言tolower函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的tolower函数的实现方法 6.获取视频教程 7.版权声明 C语言tolower函数用于把大写字母转换为小写字母. 在本文 ...

  2. java实现c语言的函数_C语言tolower函数介绍、示例和实现

    C语言tolower函数用于把大写字母转换为小写字母. 在本文中,我们先来介绍tolower函数的使用方法,然后编写一个自定义的_tolower函数,实现与tolower函数相同的功能. 1.包含头文 ...

  3. tolower函数什么意思c语言,tolower ()在c语言中是什么意思

    满意答案 ifucse 2013.04.02 采纳率:47%    等级:12 已帮助:9719人 函数名: tolower 功 能: 把字符转换成小写字母,非字母字符不做出处理 头文件:在VC6.0 ...

  4. C语言函数:tolower()、toupper字符大小写转换函数。

    C语言函数:tolower().toupper字符大小写转换函数. int toupper( int c) int tolower( int c) tolower():将字母转为小写. toupper ...

  5. C语言isupper,tolower,islower,toupper混合使用题

    程序运行结果:Ab2Cd3eF4 答案不是  aB2cD3Ef4  的原因是:tolower('A')=a;tolower('a')=a;但是未赋值给*p,所以无效果:而对于整数有效是因为(*p)++ ...

  6. 头文件 ctype.h 以及函数 isalpha() tolower()

    ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符.控制字 ...

  7. C语言再学习 -- ctype.h字符判断函数

    参看:ctype.h 百度百科 ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特 ...

  8. go 变量大写_go语言如何将大写转小写,c语言字符串小写转大写

    go语言如何将大写转小写围棋怎么把大写字母变成小写字母,go语言中大写转换为小写的方法:首先,创建一个go样本文件:然后定义一个字符串类型的变量:然后使用ToLower函数将所有大写的变量字符转换成小 ...

  9. c语言中字母大写转小写,C语言中字母大小写转换的简单操作

    大写字母要转换小写字母,要怎么操作呢?而在C语言开发中,我们经常会遇到这样或者那样的问题,别着急,爱站技术频道为你细细道来C语言中字母大小写转换的简单操作. C语言tolower()函数:将大写字母转 ...

  10. 用C语言编写简化版银行系统:ATM取款机(数组版)

    问题描述: 该银行储蓄系统的目标.结合前面的基础上开始设计一个c版银行储蓄系统,前面刚学完c言的基本操作以及自定义函数,还未涉及指针以及构体.这个简化版银行系统算是结合前面所学的知识的一个总结,适合初 ...

最新文章

  1. visual studio2010-2015编译部署caffe
  2. NDK android Error:Expected caller to ensure valid ABI: MIPS
  3. linux不能到达网关,linux – 在网关服务器上,netNS可以限制一个...
  4. 批量提取视频文件信息(文件大小及时长)并统计
  5. Codeforces Beta Round #11 B. Jumping Jack 思维
  6. centos 无法连接网络
  7. eval函数 php_PHP的一句话木马代码和函数eval的简介
  8. spring学习(8):log4j.properties 详解与配置步骤
  9. 【算法】剑指 Offer 63. 股票的最大利润
  10. Elasticsearch】es memory locking requested for process but memory is not locked
  11. 随想录(scrapy入门)
  12. 计算机专业改动漫设计,《计算机动漫与游戏制作》专业课程体系改革方案.doc...
  13. 在WINDOWS 2003上运行Apache服务
  14. SAP中销售订单中的条件类型修改控制问题配置分析
  15. 优客在线大学计算机基础答案,优课在线大学计算机基础答案.pdf
  16. 多任务让你走得更慢(很好,转自infoq)
  17. 深入浅出boot2.0第六章 数据库事务处理 隔离级别 传播行为
  18. LeetCode Daily challenge - Course Schedule
  19. 为什么设计稿是750px
  20. springboot+elasticsearch+bboss框架集成遇到的坑

热门文章

  1. 什么是BI、什么是ETL?一篇文章告诉你
  2. 乐理入门: 二、时值、节奏、节拍
  3. linux计时器命令,安装及使用Linux终端倒数计时器Countdown的方法
  4. 在Excel中使用SQL语句实现数据处理
  5. 2022盘点工作室常用的API数据接口开发平台
  6. 天气预报apipython_基于Python的免费天气预报接口查询
  7. ubuntu搭建PHP网站完整实例教程
  8. RGB与CMYK颜色模式调色原理
  9. zzuli:1000从今天开始入坑C语言
  10. python——spilt和strip用法