総合手引 | セクション 3 | オプション |
#include <rune.h>
#include <errno.h>
#include <stdio.h>
setinvalidrune() 関数は、グローバル値 _INVALID_RUNE の値を rune に設定します。
sgetrune() 関数は、長さが最大 n バイトの 1 つのマルチバイトキャラクタを string から読み込もうとします。 sgetrune() で問題が発生しなかった場合はルーンが戻されます。 result が NULL ではない場合、 *result は、 string で変換されなかった最初のバイトを指します。 string の最初の n バイトが完全なマルチバイトキャラクタを表さない場合は _INVALID_RUNE が戻され、 *result は string を指します。 string の最初でエンコードのエラーが発生した場合は _INVALID_RUNE が戻され、 *result は string の第 2 キャラクタを指します。
sputrune() 関数は、マルチバイトストリングとして rune をエンコードし、 string に保存しようとします。しかし n バイトまでしか保存されません。 result が NULL ではない場合、 *result は、新しいマルチバイトキャラクタに続くストリングの 最初のバイトを指すように設定されます。 string が NULL である場合、 *result は (char *)0 + x を指します。 x は、マルチバイト値の保存に必要なバイト数です。 マルチバイトキャラクタが n より長いバイトから構成され、 result が NULL ではない場合、 *result は NULL に設定されます。 どのような場合でも、 sputrune() は、マルチバイトキャラクタとして rune を保存するために必要なバイト数を戻します。
fgetrune() 関数は、 1 つのルーンをデコードするのに足る数のバイトを stream から読み込もうとすることを除けば、 sgetrune() と同じ動作をします。ファイルの終わりに達した場合は EOF を、エンコードでエラーが発生した場合は _INVALID_RUNE を、問題が発生しなかった場合はデコードされたルーンを戻します。
fungetrune() 関数は、次に fgetrune() を呼び出した場合に rune が戻されるように、 sputrune() が与える rune のマルチバイトエンコードを stream にプッシュします。エラーが発生した場合は EOF を戻し、エラーが発生しなかった場合は 0 を戻します。
fputrune() 関数は、 sputrune() が与える rune のマルチバイトエンコードを stream に書き込みます。エラーが発生した場合は EOF を戻し、エラーが発生しなかった場合は 0 を戻します。
0 | setrunelocale() で問題が発生しませんでした。 |
[EFAULT] | |
locale が NULL になっています。 | |
[ENOENT] | |
ロケールが見つかりません。 | |
[EFTYPE] | |
見つかったファイルが正しいファイルではありません。 | |
[EINVAL] | |
ロケールで示されるエンコードが未知のものです。 | |
sgetrune() 関数は、読み込んだルーンか _INVALID_RUNE を戻します。 sputrune() 関数は、マルチバイトストリングとして rune を保存するために必要なバイト数を戻します。
$PATH_LOCALE/ locale/LC_CTYPE
/usr/share/locale/ locale/LC_CTYPE | |
ロケール locale のバイナリ LC_CTYPE ファイル | |
setrunelocale() 関数とその他の非 ANSI ルーン関数は、 ANSI マルチバイトとワイドキャラクタサポートのより確実な代替案としての Bell Labs の Plan 9 にヒントを得ました。
すべての ANSI マルチバイトとワイドキャラクタのサポート関数は、 ルーン関数を使用して作成されています。
RUNE (3) | December 11, 1993 |
総合手引 | セクション 3 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | What will happen when the 32-bit Unix date goes negative in mid-January 2038 does not bear thinking about. | ” |
— Henry Spencer |