In stdio.h Ft long Fn fgetrune FILE *stream Ft int Fn fungetrune rune_t rune FILE *stream Ft int Fn fputrune rune_t rune FILE *stream
Fn setinvalidrune 関数は、グローバル値 _INVALID_RUNE の値を Fa rune に設定します。
Fn sgetrune 関数は、長さが最大 Fa n バイトの 1 つのマルチバイトキャラクタを Fa string から読み込もうとします。 Fn sgetrune で問題が発生しなかった場合はルーンが戻されます。 Fa result が NULL ではない場合、 Fa *result は、 Fa string で変換されなかった最初のバイトを指します。 Fa string の最初の Fa n バイトが完全なマルチバイトキャラクタを表さない場合は _INVALID_RUNE が戻され、 Fa *result は Fa string を指します。 Fa string の最初でエンコードのエラーが発生した場合は _INVALID_RUNE が戻され、 Fa *result は Fa string の第 2 キャラクタを指します。
Fn sputrune 関数は、マルチバイトストリングとして Fa rune をエンコードし、 Fa string に保存しようとします。しかし Fa n バイトまでしか保存されません。 Fa result が NULL ではない場合、 Fa *result は、新しいマルチバイトキャラクタに続くストリングの 最初のバイトを指すように設定されます。 Fa string が NULL である場合、 Fa *result は (char *)0 + Fa x を指します。 Fa x は、マルチバイト値の保存に必要なバイト数です。 マルチバイトキャラクタが Fa n より長いバイトから構成され、 Fa result が NULL ではない場合、 Fa *result は NULL に設定されます。 どのような場合でも、 Fn sputrune は、マルチバイトキャラクタとして Fa rune を保存するために必要なバイト数を戻します。
Fn fgetrune 関数は、 1 つのルーンをデコードするのに足る数のバイトを Fa stream から読み込もうとすることを除けば、 Fn sgetrune と同じ動作をします。ファイルの終わりに達した場合は EOF を、エンコードでエラーが発生した場合は _INVALID_RUNE を、問題が発生しなかった場合はデコードされたルーンを戻します。
Fn fungetrune 関数は、次に Fn fgetrune を呼び出した場合に Fa rune が戻されるように、 Fn sputrune が与える Fa rune のマルチバイトエンコードを Fa stream にプッシュします。エラーが発生した場合は EOF を戻し、エラーが発生しなかった場合は 0 を戻します。
Fn fputrune 関数は、 Fn sputrune が与える Fa rune のマルチバイトエンコードを Fa stream に書き込みます。エラーが発生した場合は EOF を戻し、エラーが発生しなかった場合は 0 を戻します。
Fn sgetrune 関数は、読み込んだルーンか _INVALID_RUNE を戻します。 Fn sputrune 関数は、マルチバイトストリングとして Fa rune を保存するために必要なバイト数を戻します。
Fn setrunelocale 関数とその他の非 ANSI ルーン関数は、 ANSI マルチバイトとワイドキャラクタサポートのより確実な代替案としての Bell Labs の Plan 9 にヒントを得ました。
すべての ANSI マルチバイトとワイドキャラクタのサポート関数は、 ルーン関数を使用して作成されています。