Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - 文字処理ライブラリ」です。

C言語プログラミング入門

14. ライブラリ関数(19/36) - 文字処理ライブラリ(3/3)

14.27 大文字・小文字チェック関数

14.27.1 isupper関数、islower関数

これらの関数は文字(1文字)が英小文字または英大文字かどうかをチェックします。

  • isupper関数は英大文字('A'〜'Z')かどうかをチェックします。
  • islower関数は英小文字('a'〜'z')かどうかをチェックします。
【表14-3-4】 isupper関数、islower関数
形式#include <ctype.h>
int isupper(int c);
int islower(int c);
返り値文字の種類が合っていた場合は0以外を返し、そうでない場合は0を返します。
引数
int c
チェックしたい文字を指定します。

14.27.2 例題

入力した文字が全て大文字かどうかをチェックします。

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define SIZE    1024
  4.  
  5. int main(void)
  6. {
  7.     char    str[SIZE];
  8.     int     idx;
  9.  
  10.     printf("文字列を入力してください ==> ");
  11.     scanf("%s", str);
  12.  
  13.    /* 文字列の最後でなく、かつ大文字でない間繰り返す */
  14.     for(idx = 0; str[idx] && isupper(str[idx]); ++idx)
  15.         ;
  16.     /* 文字列の最後の場合は全部大文字 */
  17.     str[idx] ? printf("NG.\n") : printf("OK.\n");
  18.  
  19.     return 0;
  20. }
$ ./ex14_3_3.prg
文字列を入力してください ==> HELLO
OK.
$
$ ./ex14_3_3.prg
文字列を入力してください ==> HeLLO
NG.
$
14行目
大文字かどうかをisupper関数でチェックします。

14.28 大文字・小文字変換関数

14.28.1 toupper関数、tolower関数

これらの関数は文字(1文字)を英大文字または英小文字に変換します。

  • toupper関数は英大文字に変換できる文字であれば英大文字に変換します。
  • tolower関数は英小文字に変換できる文字であれば英小文字に変換します。
【表14-3-5】「 toupper関数、tolower関数
形式#include <ctype.h>
int toupper(int c);
int tolower(int c);
返り値変換できた場合は変換後の文字を返し、そうでない場合は元の文字をそのまま返します。
引数
int c
変換したい文字を指定します。

14.28.2 例題

入力した文字列中の長さ(文字数)を表示することを繰り返し行います。「再度入力しますか(y/n) ==>」のメッセージに対して、「y」または「Y」が入力された場合に繰り返します。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #define BUFFSIZE    1024
  5.  
  6. int main(void)
  7. {
  8.     char    buff[BUFFSIZE];
  9.     char    ans;
  10.  
  11.     do
  12.     {
  13.         printf("メッセージを入力してください ==> ");
  14.         fgets(buff, BUFFSIZE, stdin);
  15.  
  16.         printf("長さは%d文字です。\n", strlen(buff) - 1);
  17.  
  18.         printf("再度入力しますか(y/n) ==> ");
  19.         scanf("%c%*c", &ans);
  20.     } while(toupper(ans) == 'Y');
  21.  
  22.     return 0;
  23. }
$ ./ex14_3_4.prg
メッセージを入力してください ==> Hello.
長さは6文字です。
再度入力しますか(y/n) ==> y ← 小文字のyを入力します
メッセージを入力してください ==> Hello World!!.
長さは14文字です。
再度入力しますか(y/n) ==> Y ← 大文字のYを入力します
メッセージを入力してください ==> Bye.
長さは4文字です。
再度入力しますか(y/n) ==> n
$
20行目
変数ansの値をtoupper関数で大文字に変換して、大文字の'Y'かどうかをチェックします。

14.29 その他の関数

14.29.1 iscntrl関数、isspace関数

  • iscntrl関数は制御文字かどうかをチェックします。
  • isspace関数は空白文字かどうかをチェックします。ここでの空白文字とは、半角スペース、フォームフィード(FF)、改行(LF/NL)、復帰(CR)、水平タブ(HT)、垂直タブ(VT)です。
【表14-3-6】 iscntrl関数、isspace関数
形式#include <ctype.h>
int iscntrl(int c);
int isspace(int c);
返り値文字の種類が合っていた場合は0以外を返し、そうでない場合は0を返します。
引数
int c
チェックしたい文字を指定します。