fopen.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /*
stdio.h [fopen]
書式: FILE *fopen(const char *filename, const char *mode)
機能: ファイルを開く
引数: const char *filename: 開くファイル名を指定
const char *mode: ファイルオーポンのモード
戻り値: 成功すると, ファイル (ストリーム) のポインタを返し,
失敗すると, NULL を返す.
*/
/*
FILE 構造体
機能: 現在のファイルポインタや, バッファサイズ, ファイルの状態を
格納
宣言:
typedef struct{
unsigned char *curp; // Current active pointer
unsigned char *buffer; // Data transfer buffer
int level; // fill/empty level of buffer
int bsize; // Buffer size
unsigned short istemp; // Temporary file indictator
unsigned short flags; // File status flags
wchar_t hold; // Ungetc char if no buffer
char fd; // File descriptor
unsigned char token; // Used for validity checking
}FILE;
*/
#include <stdio.h>
int main(void){
FILE *fp;
char *fname = "test.txt";
fp = fopen(fname, "r");
if(fp == NULL){
printf("%s ファイルが開けない\n", fname);
return 0;
}else{
printf("%s ファイルを開いた\n", fname);
}
fclose(fp);
return 0;
}
|
fopen.c の実行結果は:
[cactus:~/code_c/refer]% ./fopen
test.txt ファイルを開いた
fclose.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /*
stdio.h [fclose]
書式:int fclose(FILE *fp)
機能: ファイルを閉じる
引数: FILE *fp: fopen() で取得したファイルポインタ
戻り値: 成功すると, 0 を返し,
失敗すると, EOF(-1) を返す.
*/
#include <stdio.h>
int main(void){
FILE *fp;
char *fname = "test.txt";
fp = fopen(fname, "r");
if(fp == NULL){
printf("%s ファイルが開けない\n", fname);
return 0;
}else{
printf("%s ファイルを開いた\n", fname);
}
fclose(fp);
return 0;
}
|
fclose.c の実行結果は:
[cactus:~/code_c/refer]% ./fclose
test.txt ファイルを開いた
fmode.c
/*
ファイルを開くには fopen() 関数のモード引数 (第 2 引数) を,
読み取り用の "r" に設定したが, 書き込み場合や, 追加する場合
のオープンモードを見てみる.
オープンモードの文字列は最大 3 文字で構成される.
第 1 文字目群:
----------------------------------------
r: [Read] ファイルを読み取りモード
ファイルがない場合は, NULL を返す
----------------------------------------
w: [Write] ファイルを書き込みモード
ファイルがない場合は, 新規作成する
ファイルがある場合は, 元ファイルの
内容を破棄して書き込む
----------------------------------------
a: [Append] ファイルを追加書き込みモード
ファイルがない場合は, 新規作成する
ファイルがある場合は, 終端に追加する
----------------------------------------
第 2 文字目群と 第 3 文字目群
----------------------------------------
b: [Binary] バイナリモード
テキストファイルではなく, バイナリとし
て開く
+: [Plus] 複合モード
第 1 文字目群に, 対となるモードを追加
し読み書きを両方できるようにする
-----------------------------------------
第 2 文字目と 第 3 文字目は, 入れ替えても
大丈夫だ!!
-------------------
テキストモードでは,
---------------------------------------------------------------------------
ファイル読み取り: 改行記号 CR + LF[\r\n](0x0D, 0x0A) を LF[\n](0x0A) に変換
ファイル書き込み: 改行記号 LF[\n](0x0A) を CR + LF[\r\n](0x0D, 0x0A) に変換
---------------------------------------------------------------------------
-------------------
バイナリモードでは,
--------------------------------------
読み書き両方とも変更せずに読み書きする
--------------------------------------
--------------------------
オープンモードの全パターン
-----------------------------------------------------
"r": 読み取りモード
-----------------------------------------------------
"w": 書き込みモード
-----------------------------------------------------
"a": 追加書き込みモード
-----------------------------------------------------
"rb": バイナリ読み取りモード
-----------------------------------------------------
"wb": バイナリ書き込みモード
-----------------------------------------------------
"ab": バイナリ追加書き込みモード
-----------------------------------------------------
"r+": 読み取り + 書き込みモード
-----------------------------------------------------
"w+": 書き込み + 読み取りモード
-----------------------------------------------------
"a+": 追加書き込み + 読み取りモード
-----------------------------------------------------
"r+b" or "rb+": バイナリ読み取り + 書き込みモード
-----------------------------------------------------
"w+b" or "wb+": バイナリ書き込み + 読み取りモード
-----------------------------------------------------
"a+b" or "ab+": バイナリ追加書き込み + 読み取りモード
-----------------------------------------------------
*/
stdoutput.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*
標準入力 (stdin) = キーボード
標準出力 (stdout) = ディスプレイ
標準エラー出力 (stderr) = ディスプレイ
標準プリンタ出力 (stdprn) = プリンタ
標準補助入出力 (stdaux) = シリアル通信など
*/
#include <stdio.h>
int main(void){
char *str = "Hello";
fprintf(stdout,"%s World!!\n", str);
return 0;
}
|
stdoutput.c の実行結果は:
[cactus:~/code_c/refer]% ./stdoutput
Hello World!!