在C中使用toupper()

时间:2020-02-23 14:32:07  来源:igfitidea点击:

在本文中,我们将研究如何在C语言中使用toupper()函数。

这是一个非常简单的函数,它将字符转换为大写。

C语言中toupper()的基本语法

该函数类似于isdigit()函数,存在于<ctype.h>头文件中,因此我们必须首先包含此文件。

此函数以单个字符作为参数,并返回一个整数。

#include <ctype.h>

int toupper(int ch);

其中请注意参数类型是一个" int"。
这是因为可以将字符类型转换为整数,以便该函数能够使用ASCII值。

如果字符是小写字母,例如" a"," b",则toupper()函数将返回该值并将其转换为相应的大写字母,并返回该ASCII值。

否则,它将仅返回相同的大写字符串。
请注意,如果输入参数无法转换为大写字母,可能会发生这种情况!

现在,让我们看一个用C语言编写的简单示例。

使用toupper()函数–一个示例

下面的程序将字符串作为输入,并将所有小写字母转换为大写字母

例如,如果我们传递字符串" theitroad"作为输入,我们将得到的输出为" theitroad",其中仅包含大写字母。

请注意,这还包括原始字符串中的所有大写字符!

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
  char input[] = "theitroad";
  char output[256];

  //Get the input size
  int size = strlen(input);

  for (int i=0; i<size; i++)
      //Store the upper case letters to output[i]
      output[i] = toupper(input[i]);
  
  printf("Input: %s\n", input);
  printf("Output: %s", output);
  return 0;
}

输出

Input: theitroad
Output: theitroad

确实,如您所见,输出字符串仅包含大写字母!

某些输入的不确定行为

在toupper()函数尝试进行转换时,最好将值转换为大写字母,但有时是不可能的。

根据Linux标准,如果该值超出无符号字符值(256)的限制,或者该值是" EOF",则行为是不确定的。

//Undefined behavior!
printf("%c\n", toupper(EOF));
pritnf("%c\n", toupper(1234));

因此,在将输入传递给toupper()之前,请务必小心并检查输入内容!