SAK 図書館
パソコン基礎知識 C 言語編 (その八) 標準ファイル I/O、読み込み、書き込み
■標準ファイル I/O (stdio.h)
// ファイルオープン
fno = fopen(filename, mode);
| | |_ "r" 読み込み
| | "w" 書き込み
| | "a" 追加書き込み
| | "rb" バイナリ読み込み
| |_ ファイル名
|_ FILE * のポインタ
// ファイルクローズ
fclose(fno);
|_ FILE * のポインタ
// EOF 判定
rcd = feof(fno);
| |_ FILE * のポインタ
|_ end of file = -1
// 1 文字読む
a = fgetc(fno);
| |_ FILE * のポインタ
|_ char
// 文字列を読む
fgets(s, 5, fno);
| | |_ FILE * のポインタ
| |_ n - 1 が読まれる (この例では 4)
|_ char[n + 1]
// 書式文字列を読む
fscanf(fno, "%d,%s\n", &i, &s);
| | | |_ %s に相当する格納変数
| | |_ %d に相当する格納変数
| |_ 読み取り書式
|_ FILE * のポインタ
// 1 文字書く
fputc(a, fno);
| |_ FILE * のポインタ
|_ char
// 文字列を書く
fputs(s, fno);
| |_ FILE * のポインタ
|_ char[n]
// 書式文字列を書く
fprintf(fno, "%d,%s", i, s);
| | | |_ %s に相当する変数
| | |_ %d に相当する変数
| |_ 書き込み書式
|_ FILE * のポインタ
// その他
size_t fread(void _FAR *__ptr, size_t __size, size_t __n, FILE _FAR *__stream);
size_t fwrite(const void _FAR *__ptr, size_t __size, size_t __n, FILE _FAR *__stream);
int fseek(FILE _FAR *__stream, long __offset, int __whence);
■読み込みサンプルコード
・テキストファイルからの読み込みは、次のようにする。
text.txt の内容は、「012,abcあいう」と仮定する。
/*
========================================================================
ファイル読み込みテスト
========================================================================
*/
// インクルードヘッダ
#include <stdio.h>;
// 関数プロトタイプ宣言
int main(void);
/*
========================================================================
メイン
========================================================================
*/
int main(void)
{
FILE *fno;
int i;
char a;
char s[2000];
printf("ファイル読み込みテスト\n\n");
// 1 文字読む
printf("-- fgetc --\n");
if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) {
return(-1);
}
while (!feof(fno)) {
a = fgetc(fno);
putchar(a);
}
fclose(fno);
printf("\n");
// 文字列を読む
printf("-- fgets --\n");
if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) {
return(-1);
}
if (!feof(fno)) {
fgets(s, 5, fno); // 5 - 1 の 4 文字読まれる
printf("%s\n\n", s);
}
fclose(fno);
// 書式文字列を読む
printf("-- fscanf --\n");
if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) {
return(-1);
}
while (!feof(fno)) {
fscanf(fno, "%d,%s\n", &i, &s);
printf("%d - %s\n\n", i, s);
}
fclose(fno);
printf("-- 終了 --\n");
return(0);
}
■書き込みサンプルコード
・テキストファイルへの書き込みは、次のようにする。
text2.txt へ出力している。
/*
========================================================================
ファイル書き込みテスト
========================================================================
*/
// インクルードヘッダ
#include <stdio.h>;
// 関数プロトタイプ宣言
int main(void);
/*
========================================================================
メイン
========================================================================
*/
int main(void)
{
FILE *fno;
int i;
char a;
char s[2000];
printf("ファイル書き込みテスト\n\n");
// ファイルオープン
printf("-- fputc --\n");
if ((fno = fopen("g:\\tmp\\test2.txt", "w")) == NULL) {
return(-1);
}
// 1 文字書く
a = 'A';
fputc(a, fno);
putchar(a);
a = 'B';
fputc(a, fno);
putchar(a);
a = 'C';
fputc(a, fno);
putchar(a);
a = '\n';
fputc(a, fno);
putchar(a);
printf("\n");
// 文字列を書く
printf("-- fputs --\n");
strcpy(&s, "あいうえお\n");
fputs(s, fno);
printf("%s\n", s);
// 書式文字列を書く
printf("-- fprintf --\n");
i = 123;
strcpy(&s, "あいうえお\n");
fprintf(fno, "%d,%s", i, s);
printf("%d - %s\n", i, s);
// ファイルクローズ
fclose(fno);
printf("-- 終了 --\n");
return(0);
}
■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料