Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wcscoll返回的结果与预期不同_C_Widechar - Fatal编程技术网

wcscoll返回的结果与预期不同

wcscoll返回的结果与预期不同,c,widechar,C,Widechar,考虑以下代码: #include <wchar.h> #include <locale.h> #include <stdio.h> int main(void) { setlocale(LC_ALL, "pl_PL.UTF-8"); printf("%d\n", wcscoll(L"ą", L"b")); return 0; } 但我希望它是-1,因为在波兰字母表中,ą正好在b之前。为什么它会回来?如果不是这样的话,你怎么能按字母顺

考虑以下代码:

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

int main(void) {
    setlocale(LC_ALL, "pl_PL.UTF-8");
    printf("%d\n", wcscoll(L"ą", L"b"));
    return 0;
}

但我希望它是
-1
,因为在波兰字母表中,ą正好在b之前。为什么它会回来?如果不是这样的话,你怎么能按字母顺序比较单词呢?

我在我的Linux机器上试过,得到了
1
作为输出,和你的一样

然后我在
/etc/locale.gen
编辑了受支持的区域设置,未注释的
pl\u pl.UTF-8
(默认情况下未启用),运行
sudo locale gen
,现在它给出了
-4
,这是负数,正如预期的那样


结论是,您的系统配置不支持所选的区域设置。

我在Linux机器上尝试了它,得到了
1
作为输出,与您的一样

然后我在
/etc/locale.gen
编辑了受支持的区域设置,未注释的
pl\u pl.UTF-8
(默认情况下未启用),运行
sudo locale gen
,现在它给出了
-4
,这是负数,正如预期的那样


结论是,您的系统配置不支持所选的区域设置。

我在Linux机器上尝试了它,得到了
1
作为输出,与您的一样

然后我在
/etc/locale.gen
编辑了受支持的区域设置,未注释的
pl\u pl.UTF-8
(默认情况下未启用),运行
sudo locale gen
,现在它给出了
-4
,这是负数,正如预期的那样


结论是,您的系统配置不支持所选的区域设置。

我在Linux机器上尝试了它,得到了
1
作为输出,与您的一样

然后我在
/etc/locale.gen
编辑了受支持的区域设置,未注释的
pl\u pl.UTF-8
(默认情况下未启用),运行
sudo locale gen
,现在它给出了
-4
,这是负数,正如预期的那样


结论是您的系统配置不支持所选的区域设置。

检查
setlocale
的返回值;它可能无法识别您的国家/代码页字符串


。如果您在Windows上,请尝试传递
pl
而不是
pl.UTF-8

检查
setlocale
的返回值;它可能无法识别您的国家/代码页字符串


。如果您在Windows上,请尝试传递
pl
而不是
pl.UTF-8

检查
setlocale
的返回值;它可能无法识别您的国家/代码页字符串


。如果您在Windows上,请尝试传递
pl
而不是
pl.UTF-8

检查
setlocale
的返回值;它可能无法识别您的国家/代码页字符串



。如果您在Windows上,请尝试传递
pl
而不是
pl\u pl。UTF-8

您的计算机上是否实际安装了波兰语言环境?
排序
实用程序是否使用该区域设置正确排序?调试这类事情的第一步总是检查标准库返回值,在本例中,如果(setlocale(…)=NULL),则检查标准库返回值。@rici no实际上不检查。所以我猜这取决于操作系统?不,这是一个你在机器上安装了哪些地区的问题。因此,它比操作系统更依赖于配置,但我想这取决于你所说的操作系统依赖。@rici好吧,它也依赖于操作系统,因为该语言定义的唯一区域名称是
“C”
。任何其他区域设置都依赖于操作系统。@rodrigo:技术上是正确的,但本例中的解决方案可能不是“更改您的操作系统”或“验证您的操作系统支持多个区域设置”。(我在没有质疑后一项检查的情况下对您的答案进行了投票:))您的机器上是否实际安装了波兰语言环境?
排序
实用程序是否使用该区域设置正确排序?调试这类事情的第一步总是检查标准库返回值,在本例中,如果(setlocale(…)=NULL),则检查标准库返回值。@rici no实际上不检查。所以我猜这取决于操作系统?不,这是一个你在机器上安装了哪些地区的问题。因此,它比操作系统更依赖于配置,但我想这取决于你所说的操作系统依赖。@rici好吧,它也依赖于操作系统,因为该语言定义的唯一区域名称是
“C”
。任何其他区域设置都依赖于操作系统。@rodrigo:技术上是正确的,但本例中的解决方案可能不是“更改您的操作系统”或“验证您的操作系统支持多个区域设置”。(我在没有质疑后一项检查的情况下对您的答案进行了投票:))您的机器上是否实际安装了波兰语言环境?
排序
实用程序是否使用该区域设置正确排序?调试这类事情的第一步总是检查标准库返回值,在本例中,如果(setlocale(…)=NULL),则检查标准库返回值。@rici no实际上不检查。所以我猜这取决于操作系统?不,这是一个你在机器上安装了哪些地区的问题。因此,它比操作系统更依赖于配置,但我想这取决于你所说的操作系统依赖。@rici好吧,它也依赖于操作系统,因为该语言定义的唯一区域名称是
“C”
。任何其他区域设置都依赖于操作系统。@rodrigo:技术上是正确的,但本例中的解决方案可能不是“更改您的操作系统”或“验证您的操作系统支持多个区域设置”。(我在没有质疑后一项检查的情况下对您的答案进行了投票:))您的机器上是否实际安装了波兰语言环境?
排序
实用程序是否使用该区域设置正确排序?调试这类事情的第一步总是检查标准库返回值,在本例中,如果(setlocale(…)=NULL),则检查标准库返回值。@rici no实际上不检查。所以我猜这取决于操作系统?不,这是一个你在机器上安装了哪些地区的问题。所以它比操作系统更依赖配置,但我想这取决于你所说的操作系统依赖。@rici好吧,它是操作系统依赖的
158