رفتار این تابع بستگی به دسته LC_CTYPE از C locale انتخابی دارد.
/* mblen example */
#include <stdio.h>/* printf */
#include <stdlib.h>/* mblen, mbtowc, wchar_t(C) */
void printbuffer (const char* pt, size_t max)
{
int length;
wchar_t dest;
mblen (NULL, 0);/* reset mblen */
mbtowc (NULL, NULL, 0);/* reset mbtowc */
while (max>0) {
length = mblen (pt, max);
if (length<1) break;
mbtowc(&dest,pt,length);
printf ("[%lc]",dest);
pt+=length; max-=length;
}
}
int main()
{
const char str [] = "test string";
printbuffer (str,sizeof(str));
return 0;
}
پارامتر های ورودی
- pmb
- اشاره گر به اولین بایت یک کاراکتر چند بایتی
- همچنین این تابع ممکن است با یک اشاره گر null فراخوانی شود، که در این صورت تابع وضعیت shift داخلی خود را به مقدار اولیه ریست می کند و مشخص می کند که آیا کاراکترهای چند بایتی، رمزگذاری وابسته به وضعیت دارند یا نه.
- max
-
- ماکزیمم تعداد بایت های pmb که باید برای کاراکتر چند بایتی در نظر گرفته شود.
-
- بیش از MB_CUR_MAX کاراکتردر هر مورد بررسی نمی شود.
-
- size_t یک نوع صحیح بدون علامت است.
مقدار خروجی
اگر آرگومان ارسال شده به pmb یک اشاره گر null نباشد، اندازه کاراکتر چند بایتی که توسط pmb اشاره می شود را در صورتیکه تشکیل یک کاراکتر چند بایتی معتبر داده و کاراکتر پایانی null نباشد بر حسب بایت بر می گرداند. اگر کاراکتر پایانی null باشد تابع مقدار صفر و در صورتی که یک کاراکتر چند بایتی معتبر را تشکیل ندهند -1
را بر می گرداند.
اگر آرگومان ارسال شده به عنوانpmb یک اشاره گر null باشد، اگر رمزگذاری کاراکتر چند بایتی به وضعیت وابستگی داشته باشد تابع یک مقدار غیر صفر و در غیر اینصورت صفر را بر می گرداند.
دیدگاهها