社区
Linux/Unix社区
帖子详情
linux下wprintf为什么没有输出?
expert2000
2006-03-28 05:55:47
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t* wstr=L"哈罗";;
setlocale(LC_CTYPE,"")
wprintf(L"%s\t",wstr);
return 0;
}
linux系统中的LANG= zh_CN.GB18030
redflag 4 个人版
输出为空,为什么?是不是系统要进行什么设置?
...全文
591
13
打赏
收藏
linux下wprintf为什么没有输出?
#include #include #include int main(void) { wchar_t* wstr=L"哈罗";; setlocale(LC_CTYPE,"") wprintf(L"%s\t",wstr); return 0; } linux系统中的LANG= zh_CN.GB18030 redflag 4 个人版 输出为空,为什么?是不是系统要进行什么设置?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
expert2000
2006-03-29
打赏
举报
回复
还有我输入的时候怎么好选择用什么编码。比如程序上面要球输入中文姓名。
expert2000
2006-03-29
打赏
举报
回复
为什么LANG=GB2312的时候,能输出UNICODE的哈罗,却输不出GB2312的哈罗。
当LANG=utf8时,反而输不出UNICODE的哈罗,输出的GB2312的哈罗也是鹿镁。
bcb_alone
2006-03-29
打赏
举报
回复
因为"哈罗"这两个字的编码,本身是GB2312.比如是 0x8400 0x8500
你是用GB2312中文输入法输入的。所以是GB2312.
而wchar是换成unicode的。
所以。用wprintf输出为unicode的字符。而unicode的0x8400对应的是另一个汉字。'鹿'
//这样是可以输出的。
lang = GB2312;
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t a[3];
wchar_t* wstr=L"哈罗";
a[1] = 0x7F57; //unicode "哈"
a[0] = 0x54c8; //unicode "罗"
a[2] = L'\0';
setlocale(LC_CTYPE,"");
wprintf(L"%S\n",a);
return 0;
}
如果lang = utf8;
那么,当你重新打开你的C源文件时,“哈罗”两字已经变成其它字符了。
expert2000
2006-03-29
打赏
举报
回复
控制台输出,是不是编译的时候要加什么选项
expert2000
2006-03-29
打赏
举报
回复
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t* wstr=L"哈罗";;
setlocale(LC_CTYPE,"")
wprintf(L"%s\t",wstr);//1
wprintf(L"哈罗\n");//2
return 0;
}
以上程序,注释掉第一个或者第二个wprntf都没有输出。2个同时存在,输出 鹿镁t@lo
把第一个和第二个wprintf中的\t,\n删掉。输出 鹿镁
用的命令 #LANG=zh_CN.utf8 ./appname
编译 : gcc -o appname appname.c
fierygnu
2006-03-29
打赏
举报
回复
试试执行
LANG=zn_CN.utf8 yourapp
expert2000
2006-03-29
打赏
举报
回复
输出一长串,有zn_CN.utf8等几十个.utf8
fierygnu
2006-03-29
打赏
举报
回复
系统环境能设置为utf8。locale -a看看。
expert2000
2006-03-29
打赏
举报
回复
注释掉后输出全是????
是不是系统的环境和我输出需要的环境不一致,要怎么设置?
expert2000
2006-03-29
打赏
举报
回复
十分感谢2位的回答。还有最后一点问题
其实上面的问题,要想读入任何码值都能正确显示,就是一个内码转换的问题。将读入的码和系统当前的码比较。不同就通过码值计算转换到相同。然后看码值在系统中是否有对应,有的话字符就能正确显示。
思路是不是这样?我听说unicode编码的字符在任何语言的操作系统中都能正确显示。这个unicode不是utf8吧?那是什么?linux支持unicode吗?
bcb_alone
2006-03-29
打赏
举报
回复
因为uft8和unicode和GB2312的编码是不同的。
expert2000
2006-03-29
打赏
举报
回复
已经可以输出了。假设输出语句还是2条。
wprintf(L"%s\t",wstr);//1
wprintf(L"哈罗\n");//2
输出情形如下:
[root@redflag c]#./app
[root@redflag c
[root@redflag c
[root@redflag c]#
这是结果不对,但是,我只要把窗口刷新一下,就对了。
[root@redflag c]#./app
哈罗
哈罗
[root@redflag c]#
这是为什么?我装入的是GB18030,GB2312,UTF8还是有问题。
fierygnu
2006-03-28
打赏
举报
回复
把setlocale(LC_CTYPE,"")注释掉试试。
OBJ 模型文件与MTL材质文件 介绍
制作3D模型的软件有很多,例如3D max, Blender, Maya等。于是就有很多模型文件格式。 例如.obj、.max、.fbx .3ds。 其中obj最简单,关键是,还可以文本方式打开,对窥探3D模型的数据格式比较有用。所以,我们这里用obj格式来说明3D模型文件。 obj由Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,各大3D建模软件都支持,也很适合用于3D软件互相做格式转换。 obj文件需要搭配一个附属文件,叫mtl。全称就是materia
obj文件(3): 如何用matlab 打开obj文件
obj文件:如何用 matlab 打开 obj 文件第一步:检查obj文本格式第二步:用 Blender 软件重新导出obj文件第三步:用excel 打开这个obj 文件第四步:复制excel中的数据,传给matlab第五步: 用matlab 打开3D模型 第一步:检查obj文本格式 将obj 文件用txt文本形式打开,看里面的格式是否利于用excel读取数据 因为这个obj文件比较小,行数
没有
超过excel最大行数,所以可以用excel打开 第二步:用 Blender 软件重新导出obj文件 Blend
obj文件、mtl文件结构说明
mtl文件 obj文件是Alias|Wavefront公司开发的一种标准3D模型文件格式,适合用于3D软件模型之间的互导。 obj文件是一种文本文件,可以直接用写字板打开进行查看、编辑和修改,由一行行文本组成,注释行以符号“#”为开头,数据行由一两个标记字母也就是关键字开头,关键字解释了数据类型。若三维模型仅涉及直线和多边形,则使用到的关键字有以下几个。 obj文件使用的关键字 v: 表示本行指...
obj模型文件的格式
一般带纹理的obj模型需要有以下三个文件,分别是。纹理库文件,还有纹理贴图(这里是。用记事本或者其他工具打开查看。
什么是obj文件
此文来源:https://www.cnblogs.com/ShadowHanlder/p/4410213.html 百度百科: 程序编译时生成的中间代码文件。目标文件,一般是程序编译后的二进制文件,再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。[1] 这个问题不是很简单,你只看到了文件从源代码到EXE文件...
Linux/Unix社区
23,224
社区成员
74,535
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章