計算機実習 I

第十二回 (2014 年 6 月 26 日)

ファイル入出力、バイナリ入出力

http://www.sw.it.aoyama.ac.jp/2014/CP1/lecture12.html

Martin J. Dürst

AGU

© 2005-14 Martin J. Dürst 青山学院大学

今日の予定

ミニテスト

前回のまとめ

前回の演習

標準ライブラリについて

ファイル入出力

標準入力関数とファイル入力関数

機能 標準入力 (stdin) 任意のファイル FILE * f
準備 (不要) f = fopen(name,"r")
一文字入力 getchar() getc(f) 又は fgetc(f)
一行入力 gets(s) fgets(s,l,stdin) fgets(s,l,f)
書式つき入力 scanf(format,...) %s fscanf(f,format,...) %s
後片付け (不要) fclose(f)

 

標準出力関数とファイル出力関数

機能 標準出力 (stdout) 任意のファイル FILE * f
準備 (不要) f = fopen(name,"w")
一文字出力 putchar(c) putc(c,f) 又は fputc(c,f)
一行出力 puts(s) fputs(s,f)
書式つき出力 printf(format,...) fprintf(f,format,...)
後片付け (不要) fclose(f)

 

他に便利な関数

エラー出力 stderr

 

文字コードの概要

文字コードの実例
文字 A o y
Shift_JIS 8E 52   90 C2   41   6F   79  
UTF-8 E9 9D 92 E5 B1 B1 41   6F   79  
UTF-16 (BE) 97 52   5C 71   00 41 00 6F 00 79

 

従来の日本語用文字コード

世界的な文字コード

世界的な文字集合: Unicode/ISO 10646/JIS X 0221/...

ユニコードの符号化:

コンパイル時と実行時の文字コード

gcc での文字コード指定:

表示に使用される文字コード:

バイナリストリーム入出力

テキスト出力とバイナリ出力

文字 バイナリ
整数 十進数に変更
(数字の大きさによって桁数が違う)

そのまま
(int が 4バイトなら4バイト)

文字列 '\0' まで 決まった長さ
(ゴミを含む可能性)

例: fwrite.c

ファイルの内容の確認

テキストファイル:

バイナリファイル:

fread 関数と fwrite 関数

fseek 関数

Q&A フォーラムの題名

 

今日の演習

次回の準備