総合手引 | セクション 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.
“ | The most horrifying thing about Unix is that, no matter how many times you hit yourself over the head with it, you never quite manage to lose consciousness. It just goes on and on. | ” |
— Patrick Sobalvarro |