putchar関数を使ったサンプルコード

2024-04-02

C言語におけるputchar関数:ファイル入出力の基礎

putchar関数の概要

  • ヘッダファイル:<stdio.h>
  • プロトタイプ:int putchar(int ch);
  • 引数:
  • 戻り値:
    • 成功した場合:出力された文字(char型)を返します。
    • 失敗した場合:EOF(-1)を返します。

putchar関数は、以下の動作を行います。

  1. 引数chで指定された文字を内部的にchar型に変換します。
  2. 変換された文字を標準出力ストリーム(stdout)へ送信します。

putchar関数の使用例

#include <stdio.h>

int main() {
  putchar('A'); // 文字 'A' を出力
  putchar('\n'); // 改行を出力
  putchar('B'); // 文字 'B' を出力
  return 0;
}

この例では、putchar関数を使用してABという文字と改行を出力します。実行結果は次のようになります。

A
B

putchar関数は、ファイル入出力の基本的な機能を理解する上で役立ちます。ファイルへの文字出力は、標準出力ストリームへの出力と同様に行えます。

#include <stdio.h>

int main() {
  FILE *fp;
  fp = fopen("test.txt", "w"); // ファイルを開く
  if (fp == NULL) {
    // ファイルオープン失敗時の処理
    return 1;
  }
  putchar('C', fp); // ファイルへ文字 'C' を出力
  fclose(fp); // ファイルを閉じる
  return 0;
}

この例では、test.txtというファイルを開き、putchar関数を使用して文字Cを出力します。

putchar関数の注意点

  • putchar関数は、標準出力ストリームへの出力のみをサポートします。
  • ファイルへの出力には、fprintf関数などの他の関数を使用する必要があります。
  • putchar関数は、バッファリングを使用するため、必ずしもすぐに文字が出力されるとは限りません。
  • 出力エラーが発生した場合、EOF(-1)が返されます。

まとめ

putchar関数は、C言語における標準出力ストリームへ文字を出力する基本的な関数です。ファイル入出力の基本を理解する上で役立ちますが、ファイルへの出力にはfprintf関数などの他の関数も必要となります。



putchar関数を使ったサンプルコード

文字と改行を出力する

#include <stdio.h>

int main() {
  putchar('H'); // 文字 'H' を出力
  putchar('\n'); // 改行を出力
  putchar('e'); // 文字 'e' を出力
  putchar('l'); // 文字 'l' を出力
  putchar('l'); // 文字 'l' を出力
  putchar('o'); // 文字 'o' を出力
  putchar('\n'); // 改行を出力
  return 0;
}
Hello

繰り返し処理で文字列を出力する

#include <stdio.h>

int main() {
  int i;
  char str[] = "Hello, world!";

  for (i = 0; str[i] != '\0'; i++) {
    putchar(str[i]);
  }
  putchar('\n');

  return 0;
}

実行結果:

Hello, world!

ファイルへ文字を出力する

#include <stdio.h>

int main() {
  FILE *fp;

  fp = fopen("test.txt", "w");
  if (fp == NULL) {
    // ファイルオープン失敗時の処理
    return 1;
  }

  putchar('A', fp); // ファイルへ文字 'A' を出力
  putchar('B', fp); // ファイルへ文字 'B' を出力
  putchar('\n', fp); // ファイルへ改行を出力

  fclose(fp);

  return 0;
}

ファイル内容:

AB

putchar関数と getchar関数を使った簡易エディタ

#include <stdio.h>

int main() {
  int ch;

  while ((ch = getchar()) != EOF) {
    putchar(ch);
  }

  return 0;
}

動作:

  • キーボードから入力された文字を標準出力へ出力し続ける
  • Ctrl+Dを入力すると終了

putchar関数と配列を使った文字列出力

#include <stdio.h>

int main() {
  char str[] = "This is a string.";
  int i;

  for (i = 0; str[i] != '\0'; i++) {
    putchar(str[i]);
  }
  putchar('\n');

  return 0;
}

実行結果:

This is a string.

putchar関数とポインタを使った文字列出力

#include <stdio.h>

int main() {
  char *str = "This is a string.";

  while (*str != '\0') {
    putchar(*str);
    str++;
  }
  putchar('\n');

  return 0;
}

実行結果:

This is a string.

putchar関数は、さまざまな方法で文字列や文字を出力するのに役立ちます。これらのサンプルコードを参考に、putchar関数の使い方を理解し、プログラムに活用してください。



putchar関数以外の文字出力方法

printf関数は、書式指定に基づいてさまざまなデータを出力する関数です。文字列だけでなく、数値や浮動小数点数なども出力できます。

#include <stdio.h>

int main() {
  printf("Hello, world!\n");
  return 0;
}

実行結果:

Hello, world!

puts関数は、改行文字を含めて文字列を出力する関数です。printf関数よりも簡潔に記述できます。

#include <stdio.h>

int main() {
  puts("Hello, world!");
  return 0;
}

実行結果:

Hello, world!

fputs関数は、ファイルストリームへ文字列を出力する関数です。ファイルへの出力に適しています。

#include <stdio.h>

int main() {
  FILE *fp;

  fp = fopen("test.txt", "w");
  if (fp == NULL) {
    // ファイルオープン失敗時の処理
    return 1;
  }

  fputs("Hello, world!", fp);

  fclose(fp);

  return 0;
}

ファイル内容:

Hello, world!

fputc関数は、ファイルストリームへ文字を出力する関数です。fputs関数よりも簡潔に記述できます。

#include <stdio.h>

int main() {
  FILE *fp;

  fp = fopen("test.txt", "w");
  if (fp == NULL) {
    // ファイルオープン失敗時の処理
    return 1;
  }

  fputc('H', fp);
  fputc('e', fp);
  fputc('l', fp);
  fputc('l', fp);
  fputc('o', fp);
  fputc('\n', fp);

  fclose(fp);

  return 0;
}

ファイル内容:

Hello

その他の方法

上記以外にも、sprintf関数やvfprintf関数など、さまざまな方法で文字を出力できます。それぞれの方法の特徴を理解し、状況に応じて使い分けることが重要です。

putchar関数以外にも、C言語で文字を出力するにはいくつかの方法があります。それぞれの特徴を理解し、状況に応じて使い分けることが重要です。




typeof_unqual の代替方法:型キャスト、マクロ、C++ の std::decay

C言語における typeof_unqual キーワードは、オペランドの型を 修飾子なしの型名 で取得するために使用されます。これは、型推論やジェネリックプログラミングなどの高度なプログラミング技法を可能にする強力なツールです。typeof_unqual の役割



C言語におけるスレッドストレージ期間:詳細リファレンス

C言語では、スレッドローカル変数のストレージ期間は、以下の2種類に分類されます。静的スレッドストレージ期間: 変数はプログラムの開始から終了まで存続します。自動スレッドストレージ期間: 変数は関数呼び出しの間のみ存続します。静的スレッドストレージ期間を持つ変数は、以下の特徴を持ちます。


C言語における再現可能なプログラミングの実践

C23規格では、再現可能なプログラミングと呼ばれる新しい機能が導入されました。これは、プログラムの実行結果が、コンパイラやハードウェア構成、実行環境などに関わらず、常に同じになることを保証するものです。再現可能なプログラミングは、以下の2つの主要な機能によって実現されます。


volatile 型修飾子のサンプルコード

メモリアクセスに対する順序の保証volatile修飾された変数へのアクセスは、プログラムの順序に従って実行されます。これは、コンパイラが変数の値をレジスタに保持したり、異なる順序でアクセスしたりすることを防ぎます。外部からの変更の可能性を考慮


C言語 switch-case文の使い方:数値、文字列で複数条件分岐

1 変数switch文で評価する変数です。整数型、文字型、enum型など、様々な型が使用できます。2 case各条件を表します。caseの後に評価する値を記述します。3 処理各条件に合致した場合に実行される処理を記述します。複数の文を記述したい場合は、{ }で囲みます。



C言語 switch-case文の使い方:数値、文字列で複数条件分岐

1 変数switch文で評価する変数です。整数型、文字型、enum型など、様々な型が使用できます。2 case各条件を表します。caseの後に評価する値を記述します。3 処理各条件に合致した場合に実行される処理を記述します。複数の文を記述したい場合は、{ }で囲みます。


C言語における再現可能なプログラミングの実践

C23規格では、再現可能なプログラミングと呼ばれる新しい機能が導入されました。これは、プログラムの実行結果が、コンパイラやハードウェア構成、実行環境などに関わらず、常に同じになることを保証するものです。再現可能なプログラミングは、以下の2つの主要な機能によって実現されます。


【初心者向け】C言語「Strings」における strtoll 関数の詳細解説とサンプルコード集

strtoll 関数は、C言語の標準ライブラリ stdlib. h に含まれる関数で、文字列を指定された基数に基づいて 64ビット整数 に変換します。これは、strtol 関数の機能を拡張したもので、より大きな整数値の処理に対応しています。


C言語で sinhl を超えていく:代替方法と高精度計算

概要関数名: sinhlヘッダーファイル: <math. h>引数:返り値:定義: long double sinhl(long double x);詳細sinhl は long double 型の引数を受け取り、long double 型の値を返します。


C言語におけるアサート以外のエラー処理方法

アサートは、assert マクロを使って記述します。assert マクロは、式とその式が評価されるファイル名と行番号を受け取ります。式が 0 以外の場合、アサートは成功します。式が 0 の場合、アサートは失敗し、アサートエラーが発生します。