C言語のヘッダーファイル解説:「stdio.h」と「stdlib.h」の違いと主な関数
はじめに:stdio.h と stdlib.h とは?
C言語では、あらかじめ用意された標準ライブラリをヘッダーファイルとして読み込むことで、多彩な関数を利用できます。中でも特によく使われるのが、入出力を扱う「stdio.h」と、メモリ管理や汎用ユーティリティを扱う「stdlib.h」です。本記事では、それぞれの役割と代表的な関数を一覧表で整理し、最後に実際のサンプルコードと実行結果を紹介します。
stdio.h(標準入出力ヘッダー)
「stdio.h」は Standard Input Output の略で、標準入出力に関する情報を含むヘッダーファイルです。画面への表示やキーボードからの入力、ファイルの読み書きなど、プログラムにおける入出力処理のほとんどはこのヘッダー経由で行います。
下記の表は、stdio.h に含まれる代表的な関数をまとめたものです。
| No. | 関数と説明 |
|---|---|
| 1 | printf() 文字列・整数・文字などを画面(標準出力)に出力します。 |
| 2 | scanf() キーボードから文字・文字列・整数などを読み込みます。 |
| 3 | getc() ファイルから1文字を読み取ります。 |
| 4 | putc() ファイルへ1文字書き込みます。 |
| 5 | fopen() ファイルを開きます。なお、ファイル操作関連の関数はすべて stdio.h 内で定義されています。 |
| 6 | fclose() 開いたファイルを閉じます。 |
| 7 | remove() ファイルを削除します。 |
| 8 | fflush() バッファの内容を強制的に出力先へ書き出します(フラッシュ)。 |
それでは、stdio.h を使ったC言語のサンプルコードを見てみましょう。
サンプルコード
#include<stdio.h>
int main () {
char val;
printf("Enter the character: \n");
val = getc(stdin);
printf("Character entered: ");
putc(val, stdout);
return(0);
}
実行結果
Enter the character: s
Character entered: s
この例では、getc() によって標準入力(stdin)から1文字を受け取り、putc() で標準出力(stdout)へそのまま書き出しています。ユーザーが入力した文字がそのまま画面に表示される、シンプルな入出力の流れです。
stdlib.h(標準ライブラリヘッダー)
「stdlib.h」は Standard Library の略で、メモリの確保・解放に関する情報を含むヘッダーファイルです。動的メモリ管理のほか、文字列から数値への変換や乱数生成、プログラムの終了処理といった汎用的な機能がひとつにまとめられています。
下記の表は、stdlib.h に含まれる代表的な関数をまとめたものです。
| No. | 関数と説明 |
|---|---|
| 1 | malloc() プログラムの実行時にメモリを動的に確保します。 |
| 2 | free() 確保したメモリを解放します。 |
| 3 | abort() プログラムを異常終了(中断)させます。 |
| 4 | exit() 呼び出し元に制御を戻さずにプログラムを終了させます。 |
| 5 | atol() 文字列を long int 型に変換します。 |
| 6 | atoll() 文字列を long long int 型に変換します。 |
| 7 | atof() 文字列を浮動小数点数(double 型)に変換します。 |
| 8 | rand() ランダムな整数値を返します。 |
続いて、stdlib.h を使ったC言語のサンプルコードです。
サンプルコード
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[20] = "53875";
char str2[20] = "367587938";
char str3[20] = "53875.8843";
long int a = atol(str1);
printf("String to long int : %ld\n", a);
long long int b = atoll(str2);
printf("String to long long int : %lld\n", b);
double c = atof(str3);
printf("String to double : %f\n", c);
printf("The first random value : %d\n", rand());
printf("The second random value : %d", rand());
return 0;
}
実行結果
String to long int : 53875
String to long long int : 367587938
String to double : 53875.884300
The first random value : 1804289383
The second random value : 846930886
この例では、atol()・atoll()・atof() を使って文字列をそれぞれ long int・long long int・double 型へ変換し、さらに rand() で2つの乱数を生成して表示しています。
まとめ
stdio.h は入出力処理、stdlib.h はメモリ管理や型変換・乱数などの汎用処理を担当するヘッダーファイルです。どちらもC言語プログラミングの土台となる存在なので、各関数の役割をしっかり押さえておきましょう。用途に応じて適切なヘッダーを使い分けられるようになると、コードの品質と開発効率が大きく向上します。
-
Androidスマホでファイルやアプリを非表示にする4つの方法
スマートフォンは今や私たちの生活に欠かせない存在となっています。スマホは自分自身の分身と言っても過言ではありません。連絡先、写真、メッセージ、各種アカウント情報など、あらゆる個人情報が保存されており、その中には他人に見られたくないプライベートなデータも含まれています。 家族や友人にスマホを貸す場面は意外と多いものです。しかし、勝手にファイルや写真を覗かれたり、SNSのアカウントに不正アクセスされたりすると、単に気まずいだけでなく、深刻な被害につながる可能性もあります。悪意のある人物であれば、あなたになりすまして投稿を行ったり、オンライン決済を勝手に利用したり、さらには銀行口座へアクセスすること
-
Windows 10/11でフォルダーやファイルを比較・同期する方法【無料ツール3選】
Windowsでフォルダーやファイルを比較したい方は、ぜひこの記事を読んでみてください。ファイルやフォルダーの比較・同期に役立つ、無料で使える便利なツールをご紹介します。 大量のファイルをあるフォルダーから別のフォルダーへコピーしたとき、すべてのファイルが正しくコピー先に移ったか確認したいはずです。しかし、フォルダーやファイルを1つずつ手作業で比較して、同じ内容かどうかを確認するのは非常に手間がかかります。 この記事では、2つの異なるディレクトリの内容を簡単に比較し、完全なミラーコピーになるよう同期する方法を解説します。 Windows 11/10/8/7で2つのフォルダーの内容を比較・同期で