C言語の基礎 - 文字

提供: MochiuWiki : SUSE, EC, PCB

2021年11月16日 (火) 17:22時点におけるWiki (トーク | 投稿記録)による版 (文字列「</source>」を「</syntaxhighlight>」に置換)

文字がアルファベットかどうかをチェックする

C言語で文字がアルファベットかどうかをチェックするには、ctype.hのisalpha関数を使用する。
isalpha関数は、指定した文字がアルファベット('A' - 'Z', 'a' - 'z')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(isalpha((unsigned char)ch))
   {
      puts("入力された文字はアルファベットです");
   }
   else
   {
      puts("入力された文字はアルファベットではありません");
   }
   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字がアルファベットの小文字かどうかをチェックする

C言語で文字がアルファベットの小文字かどうかをチェックするには、ctype.hのislower関数を使用する。
islower関数は、指定した文字がアルファベットの小文字('a' - 'z')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(islower((unsigned char)ch))
   {
      puts("入力された文字はアルファベットの小文字です");
   }
   else
   {
      puts("入力された文字はアルファベットの小文字ではありません");
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字がアルファベットの大文字かどうかをチェックする

C言語で文字がアルファベットの大文字かどうかをチェックするには、ctype.hのisupper関数を使用する。
isupper関数は、指定した文字がアルファベットの大文字('A' - 'Z')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(isupper((unsigned char)ch))
   {
      puts("入力された文字はアルファベットの大文字です");
   }
   else
   {
      puts("入力された文字はアルファベットの大文字ではありません");
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字がアルファベットもしくは数字かどうかをチェックする

C言語で文字がアルファベットもしくは数字かどうかをチェックするには、ctype.hのisalnum関数を使用する。
isalnum関数は、指定した文字がアルファベットもしくは数字('A' - 'Z', 'a' - 'z', '0' - '9')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(isalnum((unsigned char)ch))
   {
      puts("入力された文字はアルファベットか数字です");
   }
   else
   {
      puts("入力された文字はアルファベットでも数字でもありません");
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字が10進数の数字かどうかをチェックする

C言語で文字が10進数の数字かどうかをチェックするには、ctype.hのisdigit関数を使用する。
isdigit関数は、指定した文字が10進数の数字('0' - '9')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(isdigit((unsigned char)ch))
   {
      puts("入力された文字は10進数の数字です");
   }
   else
   {
      puts("入力された文字は10進数の数字ではありません");
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字が16進数の数字かどうかをチェックする

C言語で文字が16進数の数字かどうかをチェックするには、ctype.hのisxdigit関数を使用する。
isxdigit関数は、指定した文字が16進数の数字('0' - '9', 'A' - 'F', 'a' - 'f')なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 入力チェック */
   if(isxdigit((unsigned char)ch))
   {
      puts("入力された文字は16進数の数字です");
   }
   else
   {
      puts("入力された文字は16進数の数字ではありません");
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字が空白文字かどうかをチェックする

C言語で文字が空白文字かどうかをチェックするには、if文を使用して文字が' 'と等しいかを判定するだけでよい。
isspace関数やisblank関数は水平タブなど他の文字も真と判定するため、単に空白かそうでないかを判定する場合は、
これらの関数は使用しない方が無難である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int c[] = {' ', '\t', '\f', '\n', '\r', '\v', 'a', '9'};
   char *s[] = {"空白", "水平タブ", "書式送り", "改行", "復帰", "垂直タブ", "文字 'a'", "数字 '9'"};
   for(int i = 0; i < 8; i++)
   {
      /* 文字チェック */
      if(c[i] == ' ')
      {
         printf("%s ==> 真\n", s[i]);
      }
      else
      {
         printf("%s ==> 偽\n", s[i]);
      }
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字が表示文字かどうかをチェックする

C言語で文字が表示文字かどうかをチェックするには、ctype.hのisprint関数を使用する。
isprint関数は、指定した文字が表示文字なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int c[] = {' ', '\t', '\f', '\n', '\r', '\v', 'a', '9'};
   char *s[] = {"空白", "水平タブ", "書式送り", "改行", "復帰", "垂直タブ", "文字 'a'", "数字 '9'"};

   for(int i = 0; i < 8; i++)
   {
      /* 文字チェック */
      if(isprint(c[i]))
      {
         printf("%s ==> 真\n", s[i]);
      }
      else
      {
         printf("%s ==> 偽\n", s[i]);
      }
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



文字が制御文字かどうかをチェックする

C言語で文字が制御文字かどうかをチェックするには、ctype.hのiscntrl関数を使用する。 iscntrl関数は、指定した文字が制御文字なら真(0以外)を返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int c[] = {' ', '\t', '\f', '\n', '\r', '\v', 'a', '9'};
   char *s[] = {"空白", "水平タブ", "書式送り", "改行", "復帰", "垂直タブ", "文字 'a'", "数字 '9'"};

   for(int i = 0; i < 8; i++)
   {
      /* 文字チェック */
      if(iscntrl(c[i]))
      {
         printf("%s ==> 真\n", s[i]);
      }
      else
      {
         printf("%s ==> 偽\n", s[i]);
      }
   }

   return EXIT_SUCCESS;
}
</syntaxhighlight>



アルファベットの大文字を小文字に変換する

C言語でアルファベットの大文字を小文字に変換するには、ctype.hのtolower関数を使用する。
tolower関数は指定したint型の文字を小文字に変換して返す関数である。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 文字を変換 */
   ch = tolower((unsigned char)ch);
   printf("小文字 ==> %c\n", ch);

   return EXIT_SUCCESS;
}
</syntaxhighlight>



アルファベットの小文字を大文字に変換する

C言語でアルファベットの小文字を大文字に変換するには、ctype.hのtoupper関数を使用する。
toupper関数は指定したint型の文字を大文字に変換して返す。

<source lang="c++">
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
   int ch = getchar();

   /* 文字を変換 */
   ch = toupper((unsigned char)ch);
   printf("大文字 ==> %c\n", ch);

   return EXIT_SUCCESS;
}
</syntaxhighlight>