C言語の文字操作を徹底解説!宣言方法と入出力関数の使い方
Cプログラミング言語において、文字(character)は英大文字(A〜Z)、英小文字(a〜z)、数字(0〜9)、空白(ホワイトスペース)、または特殊記号のいずれかとして扱われます。
文字の宣言方法
C言語で文字型変数を宣言する際は、char 型を使用します。文字定数はシングルクォーテーション(' ')で囲んで指定します。
char a = 'A'; /* 文字定数を使用した宣言 */
このように宣言することで、変数 a に1文字分のデータを格納できます。
文字入出力関数の種類
C言語には、文字を入出力するための関数がいくつか用意されています。代表的なものは以下の3組です。
- scanf / printf: 書式指定子「%c」を使って、標準入出力との間で1文字を読み書きする。
- getchar / putchar: 標準入出力から1文字ずつ読み取り・表示する。バッファリングされるため、Enterキーの押下が必要。
- getch / putch: コンソールに対してエコーバックなしで1文字を読み書きする(conio.h が必要)。
使用例(char a; と宣言した場合):
scanf("%c", &a); printf("%c", a);
a = getchar(); putchar(a);
a = getch(); putch(a);サンプルプログラム:getchar()による行数カウント
次に、getchar() を使って入力された行数を数えるCプログラムの例を紹介します。
#include <stdio.h>
/* 入力の行数をカウントする */
main(){
int count, num;
printf("複数行の文を入力し、Ctrl+Zを押してください:\n");
num = 0;
while ((count = getchar()) != EOF)
if (count == '\n')
++num;
printf("%d\n", num);
}実行結果
上記プログラムを実行すると、以下のような出力が得られます。
複数行の文を入力し、Ctrl+Zを押してください: Hi Hello Welcome To My World ^Z 4
このプログラムは、EOF(Windows環境では Ctrl+Z)が入力されるまで標準入力から1文字ずつ読み込み、改行文字('\n')が出現した回数をカウントすることで、入力された行数を求めています。while ループと if 文を組み合わせたシンプルな構成なので、文字入出力の基本を学ぶのに最適な例といえます。
-
C言語におけるユニオンとポインタの使い方を徹底解説
ユニオン(共用体)とは、異なるデータ型を持つ複数の変数が、同一のメモリ領域を共有するための仕組みです。構造体が各メンバーごとに独立したメモリを割り当てるのに対し、ユニオンではすべてのメンバーが同じアドレスを参照するという点が大きな特徴です。 ユニオンの構文 ユニオンを定義するときの基本的な書式は次の通りです。 union タグ名{ データ型 メンバー1; データ型 メンバー2; ---- ---- データ型 メンバーn; }; 実際の記述例を見てみましょう。 union sample{ int a; float b; char
-
C言語のポインタ入門!宣言・初期化から配列アクセスの実例まで徹底解説
ポインタ(pointer)とは、他の変数のメモリアドレスを格納するための変数です。C言語においてポインタは、メモリを直接操作したり、関数間でデータを効率的にやり取りしたりするために欠かせない重要な概念です。 ポインタの宣言・初期化とアクセス まず、次のような通常の整数変数の宣言を見てみましょう。 int qty = 179; 変数qtyには値「179」が格納されると同時に、メモリ上のどこかにその格納場所(アドレス)が割り当てられます。 ポインタの宣言 int *p; 「p」はポインタ変数であり、別の整数型(int)変数のアドレスを保持します。変数名の前にアスタリスク(*)を付けることで、「こ