teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2018/09/03 15:26

投稿

otn
otn

スコア86349

answer CHANGED
@@ -1,5 +1,7 @@
1
1
  まず、これは、ファイルがバイトの並びでないようなOS(メインフレームとか)も考慮した記述であり、Unix系OSもWindowsもファイルはバイトの並びなので、テキストストリームもバイナリストリームも大きな違いは無いです。Windows以外に於いてはどちらも無変換で読み書きされますし。
2
2
 
3
+ (追記)質問中の文章は、JIS規格書の引用のようですが、規格書はいろいろな環境やコンパイラを許容するために、ややわかりにくい記述になっています。どんな環境を許容するためにこういう記述になっているのかとかは、規格中に書いてないんですよね。
4
+
3
5
  > 1:fputc() や fgetc() のように、
4
6
 
5
7
  定義に外れません。

2

追記

2018/09/03 15:26

投稿

otn
otn

スコア86349

answer CHANGED
@@ -3,11 +3,13 @@
3
3
  > 1:fputc() や fgetc() のように、
4
4
 
5
5
  定義に外れません。
6
+ (追記)1行を一度に出力する必要はありません。改行文字が出力された時点で、そこまでが1行になります。
6
7
 
7
8
  > 2:➁の定義における3つの規則
8
9
 
9
10
  とは何のことでしょうか?
10
11
 
12
+
11
13
  > 3:バイナリストリームは、テキストストリームと違い文字の変換などは行わないですよね?
12
14
 
13
15
  一般的にはそうです。変換しません。

1

追記

2018/09/03 14:47

投稿

otn
otn

スコア86349

answer CHANGED
@@ -11,4 +11,10 @@
11
11
  > 3:バイナリストリームは、テキストストリームと違い文字の変換などは行わないですよね?
12
12
 
13
13
  一般的にはそうです。変換しません。
14
- この記述だけ満たせば良いなら、書くときに可逆変換して、読むときに逆変換して、書いたデータと読んだデータが常に一致すれば良いことになりますが。
14
+ この記述だけ満たせば良いなら、書くときに可逆変換して、読むときに逆変換して、書いたデータと読んだデータが常に一致すれば良いことになりますが。
15
+
16
+ ##追記
17
+ 「ファイルがバイトの並びでないような」というのは、「ファイルがレコードの並び」であるケースです。
18
+ この場合、テキストストリームだと、プログラム上の行がファイルのレコードにマッピングされます。
19
+ プログラムから改行文字を出力すると、今書いているレコードに書くのをやめて、次からは次のレコードに書くことにします。改行文字自体はファイル中に保持されません。
20
+ レコードが固定長の場合、行末の空白の有無を判断できないので、③のような記述になります。例えば、空白でパディングするレコード長10のファイルの場合、"ABC"と書いたのか、"ABC "と書いたのか、ファイルを見ても判断できません。