【C言語】putc関数とgetc関数を使ってファイルに1文字ずつ書き込み・読み込みする方法
ファイルとは
ファイル(File)とは、レコードの集まりを指し、ハードディスク上にデータを恒久的に保存しておくための場所のことです。プログラムが終了してもデータが失われないよう、永続的な保存が必要な場合にファイルが利用されます。
ファイルに対する主な操作
C言語におけるファイル操作は、基本的に以下の手順で行います。
- ファイル名を指定する
- ファイルを開く
- ファイルから読み込む
- ファイルへ書き込む
- ファイルを閉じる
基本構文
まず、ファイルを扱うためのファイルポインタを宣言します。
FILE *ファイルポインタ;
宣言の例:
FILE *fptr;
次に、fopen関数を使ってファイルを開きます。構文は以下のとおりです。
ファイルポインタ = fopen("ファイル名", "モード");
具体的な使用例:
fptr = fopen("sample.txt", "r");
FILE *fp;
fp = fopen("sample.txt", "w");
ここで「r」は読み込みモード、「w」は書き込みモードを表します。
putc()関数とgetc()関数
putc()関数は、1文字をファイルに書き込むための関数です。構文は以下のとおりです。
putc(char ch, FILE *fp);
使用例:
FILE *fp; char ch; putc(ch, fp);
getc()関数は、ファイルから1文字を読み取るための関数です。構文は以下のとおりです。
char getc(FILE *fp);
使用例:
FILE *fp; char ch; ch = getc(fp);
サンプルプログラム
以下は、putc()関数とgetc()関数を使用したC言語のプログラム例です。キーボードから入力したテキストをファイルに書き込み、その後ファイルの内容を読み取って画面に表示します。
#include<stdio.h>
int main(){
char ch;
FILE *fp;
fp=fopen("std1.txt","w"); // 書き込みモードでファイルを開く
printf("enter the text.press cntrl Z:\n");
while((ch = getchar())!=EOF){
putc(ch,fp); // 1文字ずつファイルに書き込む
}
fclose(fp);
fp=fopen("std1.txt","r");
printf("text on the file:\n");
while ((ch=getc(fp))!=EOF){ // ファイルから1文字ずつ読み取る
putchar(ch); // 読み取った文字を画面に表示する
}
fclose(fp);
return 0;
}
プログラムのポイント
while((ch = getchar()) != EOF)により、キーボードからの入力を1文字ずつ受け取ります。Windowsでは Ctrl + Z を入力するとEOF(ファイル終端)として扱われ、ループが終了します。- 書き込みが完了したら
fclose(fp)でファイルを必ず閉じます。 - その後、同じファイルを読み込みモード「r」で開き直し、getc()関数で内容を1文字ずつ読み出して
putchar()で表示しています。
実行結果
上記のプログラムを実行すると、以下のような出力が得られます。
enter the text.press cntrl Z: Hi Welcome to TutorialsPoint Here I am Presenting Question and answers in C Programming Language ^Z text on the file: Hi Welcome to TutorialsPoint Here I am Presenting Question and answers in C Programming Language
このように、putc()関数とgetc()関数を組み合わせることで、ファイルへの1文字単位の書き込みと読み込みをシンプルに実装できます。
-
C言語入門:ポインタと2次元配列の仕組みをわかりやすく解説
ポインタとは、別の変数のアドレス(メモリ上の場所)を格納するための特殊な変数です。C言語において、ポインタはメモリを直接操作できる強力な機能として、効率的なプログラミングに欠かせない存在となっています。 ポインタの主な特徴 ポインタを使うことで、メモリ領域を節約できます。 メモリ上の位置へ直接アクセスできるため、実行速度が速くなります。 ポインタを利用すると、メモリの動的な割り当てと解放が可能になり、メモリを効率的に管理できます。 リンクリストやツリーなどのデータ構造と組み合わせて使われます。 ポインタと2次元配列の関係 2次元配列は、メモリ上には行ごとに連続した形で配置されます。例えば、
-
C言語入門:モノリシックプログラミングとモジュラープログラミングの違いを徹底解説
本記事では、C言語におけるモノリシックプログラミングとモジュラープログラミングの違いを、それぞれのメリット・デメリットとともに詳しく解説します。 モノリシックプログラミングとは プログラム全体を1つの関数、すなわちmain関数だけですべて記述する方式を「モノリシック(一枚岩)型プログラミング」と呼びます。しかし、すべてのロジックを単一の関数に詰め込むのは、良いプログラミングスタイルとは言えません。 デメリット モノリシックプログラミングには、以下のような欠点があります。 プログラムが非常に大きく、複雑になりやすい。 デバッグ、テスト、保守が非常に困難になる。 モジュラープログラミングとは