关于printf和wprintf的有关问题,请赐教
关于printf和wprintf的问题,请赐教!
我在cygwin下测试如下代码,把这代码放到Freebsd系统下,依然有问题:
打印出的结果是:
中国上海
locale:C
locale:zh_CN.UTF-8
w i d e c h a r s t r i n g : S N}Y
请问为什么是这个情况?
即使把代码改成如下也问题依旧:
------解决方案--------------------
额,这个跟编译器有关吧,我在VC++6.0下正常运行,但在cfree中这段代码
------解决方案--------------------
不要混用 char 和 wchar_t 版本的流操作函数,否则会导致这些函数运行异常
试试
我在cygwin下测试如下代码,把这代码放到Freebsd系统下,依然有问题:
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(int argc,char* argv[]){
char *str="中国上海";
printf("%s\n",str);
char *locale=setlocale(LC_CTYPE,NULL);
printf("locale:%s\n",locale);
locale=setlocale(LC_CTYPE,"zh_CN.UTF-8");
printf("locale:%s\n",locale);
wchar_t *wcstr=L"北京您好";
wprintf(L"wide char string:%ls\n",wcstr);
return 0;
}
打印出的结果是:
中国上海
locale:C
locale:zh_CN.UTF-8
w i d e c h a r s t r i n g : S N}Y
请问为什么是这个情况?
即使把代码改成如下也问题依旧:
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(int argc,char* argv[]){
char *locale=setlocale(LC_CTYPE,"zh_CN.UTF-8");
printf("locale:%s\n",locale);
char *str="中国上海";
printf("%s\n",str);
wchar_t *wcstr=L"北京您好";
wprintf(L"wide char string:%ls\n",wcstr);
return 0;
}
------解决方案--------------------
额,这个跟编译器有关吧,我在VC++6.0下正常运行,但在cfree中这段代码
wchar_t *wcstr=L"北京您好";都编译不了……换成英文就行!
------解决方案--------------------
不要混用 char 和 wchar_t 版本的流操作函数,否则会导致这些函数运行异常
试试
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(int argc,char* argv[])
{
setlocale(LC_CTYPE,"zh_CN.UTF-8");
char *str="中国上海";
printf("%s\n",str);
wchar_t *wcstr=L"北京您好";
printf("wide char string:%ls\n",wcstr);
return 0;
}