#include <wchar.h> size_t mbsnrtowcs(wchar_t *dest, const char **src, size_t nms, size_t len, mbstate_t *ps);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
mbsnrtowcs():
dest が NULL でなければ mbsnrtowcs() 関数は *src からのマルチバイト文字列の最大 nms までを dest からのワイド文字列に変換する。 最大 len 文字のワイド文字が dest に書き込まれる。 同時にシフト状態 *ps を更新する。 変換は mbrtowc(dest, *src, n, ps) を、この呼び出しが成功する限り、繰り返し実行したのと実質的に同様である。 ここでの n は正の数であり、繰り返しごとに dest が 1 増加させられ、 *src が消費したバイト数だけ増加させられる。変換は以下の三つの いずれかの条件で停止する:
According to POSIX.1, if the input buffer ends with an incomplete character, it is unspecified whether conversion stops at the end of the previous character (if any), or at the end of the input buffer. The glibc implementation adopts the former behavior.
dest が NULL の場合、len は無視され、上記と同様の変換が 行われるが、変換されたワイド文字はメモリーに書き込まれず、変換先の上限 が存在しない。
上記のどちらの場合でも、ps が NULL ならば、 代りに mbsnrtowcs() 関数のみが使用する静的で名前のない状態が使用される。
プログラマーは dest に最低でも len ワイド文字を書き込むこ とができる空間があることを保証しなければならない。
インターフェース | 属性 | 値 |
mbsnrtowcs() | Thread safety | MT-Unsafe race:mbsnrtowcs/!ps |
ps に NULL を渡した際の動作はマルチスレッドセーフでない。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]