Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189269
  • 博文数量: 45
  • 博客积分: 1657
  • 博客等级: 上尉
  • 技术积分: 765
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-13 12:42
文章分类

全部博文(45)

文章存档

2012年(1)

2011年(4)

2010年(6)

2009年(3)

2008年(31)

分类: LINUX

2008-05-26 03:17:32

1、消除图形中字符串尾的黑线:从标准输入中接收的字符中含一个结束符,而microwindows所接收的是不含这个结束符,比方从标准输入写的“三人成虎”是9个字符,而要在mw上正常显示,必须消除那个结束符,例:query[strlen(query)-1]='\0',这样后在mw上就能正常显示“三人成虎”了!

2、字符编码问题:(耗了我至少8个小时的BUGNND)
编译完mw库,会发现一系列示例程序,make一下就可以运行了,在/uclinux/exp/mw/文件夹下的第6个文件夹是/demofont,可以运行显示中文,但自己创建文件(在fedora下)写的(正确代码)绝对运行不了,也就是乱码。为什么,file一下就明白了!库带的文件编码全是GB2312,而fedora系统是UTF-8,不亲身经历还真的不知道!其实即使file了都不见得行,因为它显示的是ISO-8859,一下子就晕了,8859还有16个系列呢!一个个试?GOOGLE!shell的iconv,在无数次失败中重生:

#iconv -f utf-8 -t gb2312 -c cycd>cycddd            //把utf-8文件转为gb2312文件
#grep `echo 三人成虎|iconv -f utf-8 -t gb2312` cycddd    //感谢上帝,竟然成功
现在看起来这么简单,但当时在没有出路时四处摸索,极其痛苦!

3、server网络通信:线程还是子进程问题?
开始用的是线程,毕竟启动快,占资源少,但陷入了不可理解(相同的代码,独立启动一个进程却可以运行)的错误:用线程监听网络,数据能发出去,但绝对收不回来,改用子进程,可以了,但得加入两个进程通信的管道以及信号的注册和发送。

4、pc输入问题:图形界面还是命令行?
图形界面几乎不可能,mw中有个GrNewInputWindow函数,属性是只可以读的,也就是不能往上写数据,api是这样写的,无法解释,多半是我理解的不对!如果用GrNewWindow的话,要用到cursor,肯定至少有个线程监听,估计这一个就够写一个周……只好命令行,线程?算了还是用进程稳定些,但是命令行输入的还是utf-8编码,再fork个孙子进程?那通信得多麻烦,还是使用函数system吧,把标准输出文件符改到管道,子进程读、存,再写管道(为什么不能读两次,好像管道是一次性读吧),父进程再读、存。这时的输入是不可printf的(乱码),但能在mw上正常显示。

阅读(907) | 评论(0) | 转发(0) |
0

上一篇:C语言字符串函数

下一篇:Google小技巧

给主人留下些什么吧!~~