計算機実習 I

第十二回 (2015 年 6 月 25 日)

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

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

Martin J. Dürst

AGU

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

今日の予定

 

ミニテスト

 

前回のまとめ

 

豆知識: うるう秒

前回の演習結果

11A1 11B2 11C1 11C2
100点 91 84 50 25
60点 2 9 42 52
部分点 - - - 13
エラー - - 1 2
未提出 1 1 1 2

 

11C2 の注意点

[昨年度資料につき削除]

標準ライブラリについて

ファイル入出力

 

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

機能 標準入力 (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 フォーラムの題名

 

今日の演習

次回の準備