C言語は、非常に強力で効率的なプログラミング言語であり、システムプログラミングや組み込みシステム、さらにはアプリケーション開発に広く使用されています。この記事では、C言語の実用的なアプリケーションについて、いくつかの例を挙げて解説します。これらの例を通じて、C言語の強力な機能を理解し、実際の開発にどのように活用できるかを学びます。
1. 基本的な計算機プログラム
C言語を使って、簡単な四則演算を行う計算機プログラムを作成することができます。これはC言語の基本的な入出力操作、条件分岐、ループ処理を学ぶのに最適な例です。

c#include
int main() {
double num1, num2;
char operator;
printf("Enter first number: ");
scanf("%lf", &num1);
printf("Enter an operator (+, -, *, /): ");
scanf(" %c", &operator);
printf("Enter second number: ");
scanf("%lf", &num2);
switch(operator) {
case '+':
printf("Result: %.2lf\n", num1 + num2);
break;
case '-':
printf("Result: %.2lf\n", num1 - num2);
break;
case '*':
printf("Result: %.2lf\n", num1 * num2);
break;
case '/':
if (num2 != 0)
printf("Result: %.2lf\n", num1 / num2);
else
printf("Error! Division by zero.\n");
break;
default:
printf("Invalid operator!\n");
}
return 0;
}
このプログラムは、ユーザーに数値と演算子を入力させ、その後、指定された演算に基づいて結果を計算します。switch
文を使用して、異なる演算を実行しています。
2. 配列を使った数値のソート
次に、配列を使用して数値をソートする簡単なアルゴリズムを実装してみましょう。ここでは、バブルソートという手法を使って、配列内の数値を昇順に並べ替えます。
c#include
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Swap arr[j] and arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubbleSort(arr, n);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
このプログラムは、bubbleSort
関数を使って配列を昇順に並べ替えます。配列の各要素を順番に比較し、必要に応じて交換を行うことでソートを実現しています。
3. ポインタを使ったメモリ操作
C言語ではポインタを使ってメモリのアドレスを操作することができます。ポインタは、メモリ効率を向上させるために重要な役割を果たします。以下は、ポインタを使用して変数の値を変更する例です。
c#include
void modifyValue(int *ptr) {
*ptr = 100;
}
int main() {
int num = 50;
printf("Before modification: %d\n", num);
modifyValue(&num);
printf("After modification: %d\n", num);
return 0;
}
このプログラムでは、modifyValue
関数がポインタを引数として受け取り、そのポインタを通じて変数の値を変更します。&
演算子を使って変数のアドレスを渡し、*
演算子を使ってそのアドレスに格納されている値を変更しています。
4. ファイル操作
C言語は、ファイルの読み書きも簡単に行える機能を提供しています。以下の例では、テキストファイルを作成し、そのファイルにデータを書き込む方法を示します。
c#include
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file\n");
return 1;
}
fprintf(file, "Hello, world!\n");
fprintf(file, "C language is powerful.\n");
fclose(file);
printf("Data written to file successfully.\n");
return 0;
}
このプログラムは、fopen
関数でファイルを開き、fprintf
関数を使ってデータを書き込みます。書き込みが終了したら、fclose
関数でファイルを閉じます。
5. 再帰を使用した階乗計算
再帰は、関数が自分自身を呼び出すことで問題を解決する技法です。以下は、再帰を使って整数の階乗を計算する例です。
c#include
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
このプログラムでは、factorial
関数が再帰的に自分自身を呼び出して、整数の階乗を計算します。n == 0
またはn == 1
の場合には、基本的な条件を満たすため、再帰呼び出しを停止します。
結論
C言語は非常に柔軟で強力な言語であり、さまざまなアプリケーションを開発するために使用できます。基本的な計算機プログラムやソートアルゴリズムから、ポインタやファイル操作、再帰に至るまで、C言語は多くの重要な概念を学ぶための素晴らしいツールです。これらの実用的な例を通じて、C言語の基本的な機能とその活用方法を理解することができます。