C 为什么mblen()总是返回1?

C 为什么mblen()总是返回1?,c,unicode,C,Unicode,考虑以下代码: #include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <locale.h> #define MAX 64 void main(void) { char napis[] = "coś żółtego"; int i; wchar_t bufor[MAX]; int ret; setlocale(LC_CTYPE

考虑以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

#define MAX 64

void main(void)
{
    char napis[] = "coś żółtego";
    int i;
    wchar_t bufor[MAX];
    int ret;

    setlocale(LC_CTYPE, "");

    printf("zwykły string [%s] długość %d\n", napis, mblen(napis, MAX)); // <---

    ret = mbstowcs(bufor, napis, sizeof bufor);
    if (ret == MAX)
        bufor[MAX-1] = '\0';
    if (ret > 0)
    {
        printf("16 bitowy string: [%ls] długość napisu %d długość %d\n", bufor, mblen(napis, MAX), ret);
        for(i = 0; i < ret; i++)
            printf("%lc|", bufor[i]);
        printf("\n");
    }
}
#包括
#包括
#包括
#包括
#定义最大64
真空总管(真空)
{
char napis[]=“cośżółtego”;
int i;
wchar_t bufor[MAX];
int ret;
setlocale(LC_CTYPE,“”);
printf(“zwykły字符串[%s]długość%d\n”,napis,mblen(napis,MAX));//0)
{
printf(“16位字符串:[%ls]długośćnapisu%długość%d\n],bufor,mblen(napis,MAX),ret);
对于(i=0;i
当使用
gcc-o file file.c运行代码时,我总是从
mblen()
中得到1。为什么会这样

其他一切都可以很好地工作,但是
mblen()
不行

我尝试使用LC"u ALL,但没有任何改变。

因为
“cośżó322; tego”
中的第一个
“c”只有1个字节

函数的作用是:检查多字节字符串中最多n个字节 从s开始,提取下一个完整的多字节字符


换成“żośżółtego”,看看会发生什么。

i get mblen()=2;-)是的,得到2,换句话说:
mblen
不返回字符串的长度,而是返回第一个多字节字符的长度。