1.23.4 ISO 準拠の C ライブラリ入出力の特性

汎用 ARM C ライブラリでは入出力特性が定義されています。

これらの入出力特性を以下に示します。
  • テキストストリームの最終行に終了改行文字は必要ありません。
  • テキストストリームに書き込まれる改行文字の直前にスペース文字があった場合は、読み出し時にもそのスペース文字が読み出されます。
  • バイナリ出力ストリームには NUL 文字は追加されません。
  • 追加モードストリームのファイル位置インジケータは、最初はファイルの終わりに配置されています。
  • テキストストリームへの書き込みによって、書き込みが発生した場所以降の関連ファイルの内容は切り捨てられる場合があります。これは、書き込み発生場所以降の内容切り捨てが、そのファイルのデバイスカテゴリの動作である場合に発生します。
  • セミホスティングが使用される場合、開かれるファイルの最大数は、使用できるターゲットメモリによって制限されます。
  • 長さがゼロのファイル、つまり出力ストリームによって文字が書き込まれなかったファイルも作成されます。
  • ファイルは読み出し用には何回でも開くことができますが、書き込みまたは更新用に開くことは 1 回しかできません。1 つのファイルをあるストリーム上で読み出し中に、別のストリーム上で書き込みまたは更新する目的で同時に開くことはできません。
  • ローカルタイムゾーンとサマータイムは実装されていません。戻り値は、これらの情報を使用できないことを示します。例えば、gmtime() 関数は必ず NULL を返します。
  • exit() によって返されるステータスは、渡された値と同じです。EXIT_SUCCESSEXIT_FAILURE の定義については、ヘッダファイル stdlib.h を参照して下さい。ただし、セミホスティングが実行環境にステータスを返すことはありません。
  • strerror() 関数によって返されるエラーメッセージは、perror() 関数によって返されるエラーメッセージと同じです。
  • 要求されたエリアのサイズがゼロである場合、calloc()realloc()NULL を返します。
  • 要求されたエリアのサイズがゼロである場合、malloc() はゼロサイズのブロックを指すポインタを返します。
  • abort() は開いているファイルをすべて閉じ、すべての一時ファイルを削除します。
  • fprintf()%p 引数では、精度に 8 が指定された場合と同様に小文字の 16 進数形式を出力します。バリアント形式(%#p)の場合は、数値の前に文字 @ が付きます。
  • fscanf() は、%p 引数を %x 引数とまったく同じように処理します。
  • fscanf() は、%...[...] 引数内の文字 "-" を常にリテラル文字として処理します。
  • ftell()fsetpos()、および fgetpos() は、失敗時には errno を値 EDOM に設定します。
  • perror() は、以下の表に示すメッセージを生成します。

表 1-11 perror() メッセージ

エラー メッセージ
0 エラーはありません(errno = 0)
EDOM
EDOM - 関数の引数が範囲外です
ERANGE
ERANGE - 関数の結果が表現可能ではありません
ESIGNUM
ESIGNUM - シグナル番号が不正です
その他
不明なエラー
以下の特性は ARM C ライブラリでは規定されていません。ISO 準拠の実装で規定する必要があります。
  • ファイル名の妥当性。
  • remove() によって開いているファイルを削除できるかどうか。
  • 新しい名前が既に存在している場合に、rename() 関数を呼び出したときの影響。
  • getenv() の呼び出しによる影響(デフォルトでは NULL が返され、使用できる値はありません)。
  • system() の呼び出しによる影響。
  • clock() によって返される値。
関連する概念
1.23.1 ARM C ライブラリが ISO C 仕様の要件を満たす方法
関連する参考文書
1.23.2 mathlib エラー処理
1.23.3 C ライブラリの signal() 関数と追加の型引数によりサポートされる ISO 準拠のシグナルの実装
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.