Linux中的toupper函数详解 (linux中的toupper)

在Linux操作系统中,toupper函数是一个十分有用的函数,能够将一个小写字母转换成大写字母,从而使得字符串的处理更加方便。在本文中,我们将详细介绍toupper函数的用法以及实现原理。

一、toupper函数的介绍

toupper函数是ctype.h头文件中定义的一个函数,其功能是将小写字母转换成对应的大写字母。函数原型如下:

int toupper(int c);

该函数的参数c是一个整型变量,它表示要转换的小写字母。函数返回值是一个整型变量,它表示对应的大写字母。

该函数的实现与本地字符集有关,因此在不同的语言环境下可能会得到不同的结果。

二、toupper函数的用法

toupper函数的使用非常简单,只需要将小写字母作为参数传入函数中,即可得到对应的大写字母。下面是一个简单的例子:

#include

#include

int mn()

{

char ch = ‘a’;

ch = toupper(ch);

printf(“The uppercase of ‘%c’ is ‘%c’.\n”, ‘a’, ch);

return 0;

}

在该例子中,我们定义了一个char类型的变量ch,初始值为小写字母a。然后使用toupper函数将该字母转换成大写字母,并将结果存储在变量ch中。最后使用printf函数输出转换后的结果。

三、toupper函数的实现原理

在实现toupper函数时需要考虑两个问题:一是如何判断字符是小写字母,二是如何将小写字母转换成大写字母。

对于之一个问题,我们可以使用标准C库中的islower函数进行判断。islower函数是另一个ctype.h库函数,其功能是判断一个字符是否为小写字母。其函数原型如下:

int islower(int c);

该函数的参数c是一个整型变量,它表示要判断的字符。函数返回值是一个整型变量,如果字符是小写字母则返回非零值,否则返回0。

对于第二个问题,我们可以使用ASCII码值进行计算。ASCII码是一种包含数字、字母、标点符号等字符的编码方式,每个字符对应一个唯一的ASCII码值。ASCII码表的前128个字符包含了常见的字符,其中小写字母的ASCII码值范围是97~122,大写字母的ASCII码值范围是65~90。因此,我们可以通过将小写字母的ASCII码值减去32,得到对应的大写字母的ASCII码值。

下面是toupper函数的简化实现:

int my_toupper(int c)

{

if (islower(c))

return c – 32;

else

return c;

}

在该函数中,我们首先调用islower函数判断字符是否为小写字母。如果是,则将字符的ASCII码值减去32得到对应的大写字母的ASCII码值,然后返回结果。如果不是小写字母,则直接返回原字符。

四、

相关问题拓展阅读:

Linux认证题目含答案

1.使用vi编辑文本只读时,强制存盘并退出的命令是?(单选题)

  A :w! B :q! C :wq! D :e!

  答案:C

  2.使用什么命令把两个文件的合并成一个文件?(单选题)

  A cat B grep Cawk D cut

  答案:A

  3以下哪一个命令只查找源代码、二进制文件和帮助文件,而不是所以类型的文件?此命令查找的目录是由环境变量$PATH指定的。(单选题)

  A whereis B whatis C which D apropos

  答案:A

  4.使用什么命令进行查询,并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和*?(单选题)

  A whereis B find C locate D type

  答案:C

  5.使用什么命令把打印任务放到打印队列中去打印。(单选题)

  A lprm B lpq C lpd D lpr

  答案:D

  6、使用什么命令自动卸载已安装的老版本软件包并安装新软件包,即使不存在老版本也会神氏仿安装新软件包。(单选题)

  A:rpm -U B:rpm -i C: rpm -F D: rpm -e

  答案:A

  7、如果文件/usr/bin/passwd的属性为-r-s – -x- -x,则s代表?(单选题)

  A:SUID B: SGID C: Sticky D:Excutable

  答案:A

  8、当一个文件属性为drwxrwxrwt,则这个文件的权限是什么样的?(多选题)

  A: 任何用户皆可读取、可写入 B:root 可以删除该目录的文件

 游纤 C:给普通用户以文件所有者的特权 D:文件拥有者有权删除该目录的文件

  答案:ABD

  9:什么命令用来查看硬盘被占用了多少空间和剩余多少空间?(单选题)

  A: du B: df C: free D: vmstat

  答案:B

  10: Linux 使用者的帐号、密码与群组的名称文件放在哪些文件里?(多选题)

  A:/etc/passwd B: /etc/shadow

  C: /etc/group D: /etc/users

  答案:ABC

  11、暂停某用户帐号可以使用如下哪些方法?(多选题)

  A.把/etc/passwd文件中该用户信息字段前加#

  B.passwd -1

  C.将/etc/passwd该用户信息shell字段改成/in/nologin

  D.passwd -u

  答案:BC

  12、什么命令可以查看曾经登录到此系统的用户清单?(*单选题核尺)

  A.ps B.last C.lastcomm D.accton

  答案:B

  13、以下哪一个内核版本属于测试版本?(单选题)

  A.2.0.0 B.1.2.25 C 2.3.4 D 3.0.13

  答案:C

  14、假如你已经把编译好的新内核复制到/boot目录,如果你想让系统启动时缺省使用新内核而旧的’内核依然有效,你需要在/etc/lilo.conf文件中添加哪一个选项?(单选)

  A.boot=B.image= C.install= D.map=

  答案:B

  15、编译内核时,可以使用哪些命令对内核进行配置?(多选)

  A.makeconfig B.make menuconfig C.make oldconfig D. makexconfig

  答案:ABCD

  16.假如系统启动进入运行级别3,则在/etc/rc.d/rc3.d/目录中,以下哪一个脚本首先执行?(单选题)

  A.K20rwhod B. S30syslog C. K96pcmcia D. S99linuxcof

  答案:B

  17.假如你想计划让系统自动在每个月的之一天早上4点钟执行一个维护工作,以下哪个cron是正确的?(单选题)

  A.# * /maintenance.pl B. 4 1 * *~/maintenance.pl

  C./1 * * ~/maintenance.pl D.~/maintenance.pl

  答案:A

  18在/etc/fstab指定的文件系统加载参数中,什么参数一般用于CD-ROM等移动设备?(单选题)

  A.defaults B. sw C. rw和ro D. noauto

  答案:D

  19终止一个前台进程可能用到的命令和操作是?(单选题)

  A.kill B. +C C. shut down D. halt

  答案:B

  20一个文件名为rr.Z,可以用来解压缩的命令是?(单选题)

  A.tar B. gzip C. compress D. uncompress

  答案:D

  21、在Linux中,如何标识接在IDE0上的slave硬盘的第2个扩展分区?(C)

  A. /dev/hdb2

  B. /dev/hd1b2

  C. /dev/hdb6

  D. /dev/hd1b6

  22、在应用程序起动时,如何设置进程的优先级?(B)

  A. priority

  B. nice

  C. renice

  D. setpri

  23、在 bash 中, 在一条命令后加入 “1>&2” 意味着:(C)

  A. 标准错误输出重定向到标准输入

  B. 标准输入重定向到标准错误输出

  C. 标准输出重定向到标准错误输出

  D. 标准输出重定向到标准输入

  24、下面哪条命令可以把f1.txt复制为f2.txt?(C)

  A. cp f1.txt | f2.txt

  B. cat f1.txt | f2.txt

  C. cat f1.txt > f2.txt

  D. copy f1.txt | f2.txt

  25、显示一个文件最后几行的命令是:(D)

  A. tac

  B. tail

  C. rear

  D. last

  26、如何快速切换到用户John的主目录下?(D)

  A. cd @John

  B. cd #John

  C. cd &John

  D. cd ~John

  27、把一个流中所有字符转换成大写字符,可以使用下面哪个命令?(A)

  A. tr a-z A-Z

  B. tac a-z A-Z

  C. sed /a-z/A-Z

  D. sed –toupper

  28、使用什么命令可以查看Linux的启动信息?(B)

  A. mesg -d

  B. dmesg

  C. cat /etc/mesg

  D. cat /var/mesg

  29、运行级定义在:(B)

  A. in the kernel

  B. in /etc/inittab

  C. in /etc/runlevels

  D. using the rl command

  30、如何装载(mount)上在 /etc/fstab 文件中定义的所有文件系统?(A)

  A. mount -a

  B. mount /mnt/*

  C. mount

  D. cat /etc/fstab | mount

  31、如果使用ln命令将生成了一个指向文件old的符号链接new,如果你将文件old删除,是否还能够访问文件中的数据?(A)

  A. 不可能再访问

  B. 仍然可以访问

  C. 能否访问取决于file2的所有者

  D. 能否访问取决于file2的权限

  32、在ext2fs文件系统中,缺省的为root用户保留多大的空间?(C)

  A. 3%

  B. 5%

  C. 10%

  D. 15%

  33、下面哪个命令用来显示系统中各个分区中inode的使用情况?(A)

  A. df -i

  B. df -H

  C. free -b

  D. du -a -c /

  34、在大多数Linux发行版本中,图形方式的运行级定义为?(D)

  A. 1

  B. 2

  C. 3

  D. 5

  35、如何在系统文档中找到关于print这个单词的所有说明?(D)

  A. man print

  B. which print

  C. locate print

  D. apropos print

  36、命令 man 5 passwd 含义是?(B)

  A. 显示 passwd 命令的使用方法

  B. 显示 passwd 文件的结构

  C. 显示 passwd 命令的说明的前五行

  D. 显示关于passwd的前五处说明文档。

  37、如何在文件中查找显示所有以”*”打头的行?(D)

  A. find * file

  B. wc -l * C. grep -n * file

  D. grep * file

  38、在ps命令什么参数是用来显示所有用户的进程的?(A)

  A. a

  B. b

  C. u

  D. x

  39、显示二进制文件的命令是?(A)

  A. od

  B. vil

  C. view

  D. binview

  40、如何显示Linux系统中注册的用户数(包含系统用户)?(D)

  A. account -l

  B. nl /etc/passwd |head

  C. wc –users /etc/passwd

  D. wc –lines /etc/passwd

  41、在一行结束位置加上什么符号,表示未结束,下一行继续?(B)

  A. /

  B.

  C. ;

  D. |

  42、命令 kill 9 的含义是:(D)

  A. kills the process whose PID is 9.

  B. kills all processes belonging to UID 9.

  C. sends SIGKILL to the process whose PID is 9.

  D. sends SIGTERM to the process whose PID IS 9.

  43、如何删除一个非空子目录/tmp?(D)

  A. del /tmp/*

  B. rm -rf /tmp

  C. rm -Ra /tmp/*

  D. rm -rf /tmp/*

  44、使用什么命令可以在今天午夜运行命令 cmd1 ?(D)

  A. at midnight cmd1

  B. cron -at “00:00” cmd1

  C. batch -t “00:00” D. echo “cmd1” | at midnight

  45、你的系统使用增量备份策略,当需要恢复系统时,你需要按什么顺序恢复备份数据?(B)

  A. 最后一次全备份,然后从最早到最近的增量备份

  B. 最后一次全备份,然后从最近到最早的增量备份

  C. 最早到最近的增量备份,然后最后一次全备份

  D. 最近到最早的增量备份,然后最后一次全备份

  46、对所有用户的变量设置,应当放在哪个文件下?(D)

  A. /etc/bashrc

  B. /etc/profile

  C. ~/.bash_profile

  D. /etc/skel/.bashrc

  47、Linux系统中,一般把命令 ls 定义为 ls –color 的别名,以便以不同颜色来标识不同类型的文件。但是,如何能够使用原先的ls命令?

  (A)

  A. ls

  B. ;ls

  C. ls $$

  D. ls –noalias

  48、在Linux系统中的脚本文件一般以什么开头?(D)

  A. $/bin/sh

  B. #!/bin/sh

  C. use /bin/sh

  D. set shell=/bin/sh

  49、下面哪种写法表示如果cmd1成功执行,则执行cmd2命令?(A)

  A. cmd1&&cmd2

  B. cmd1|cmd2

  C. cmd1;cmd2

  D. cmd1||cmd2

  50、在哪个文件中定义网卡的I/O地址?(C)

  A. cat /proc/modules

  B. cat /proc/devices

  C. cat /proc/ioports

linux中的toupper的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux中的toupper,Linux中的toupper函数详解,Linux认证题目含答案的信息别忘了在本站进行查找喔。


数据运维技术 » Linux中的toupper函数详解 (linux中的toupper)