- 論壇徽章:
- 0
|
1、消除圖形中字符串尾的黑線:從標(biāo)準(zhǔn)輸入中接收的字符中含一個(gè)結(jié)束符,而microwindows所接收的是不含這個(gè)結(jié)束符,比方從標(biāo)準(zhǔn)輸入寫的“三人成虎”是9個(gè)字符,而要在mw上正常顯示,必須消除那個(gè)結(jié)束符,例:query[strlen(query)-1]='\0',這樣后在mw上就能正常顯示“三人成虎”了!2、字符編碼問題:(耗了我至少8個(gè)小時(shí)的BUGNND)編譯完mw庫,會(huì)發(fā)現(xiàn)一系列示例程序,make一下就可以運(yùn)行了,在/uclinux/exp/mw/文件夾下的第6個(gè)文件夾是/demofont,可以運(yùn)行顯示中文,但自己創(chuàng)建文件(在fedora下)寫的(正確代碼)絕對(duì)運(yùn)行不了,也就是亂碼。為什么,file一下就明白了!庫帶的文件編碼全是GB2312,而fedora系統(tǒng)是UTF-8,不親身經(jīng)歷還真的不知道!其實(shí)即使file了都不見得行,因?yàn)樗@示的是ISO-8859,一下子就暈了,8859還有16個(gè)系列呢!一個(gè)個(gè)試?GOOGLE!shell的iconv,在無數(shù)次失敗中重生:#iconv -f utf-8 -t gb2312 -c cycd>cycddd //把utf-8文件轉(zhuǎn)為gb2312文件#grep `echo 三人成虎|iconv -f utf-8 -t gb2312` cycddd //感謝上帝,竟然成功現(xiàn)在看起來這么簡(jiǎn)單,但當(dāng)時(shí)在沒有出路時(shí)四處摸索,極其痛苦!3、server網(wǎng)絡(luò)通信:線程還是子進(jìn)程問題?開始用的是線程,畢竟啟動(dòng)快,占資源少,但陷入了不可理解(相同的代碼,獨(dú)立啟動(dòng)一個(gè)進(jìn)程卻可以運(yùn)行)的錯(cuò)誤:用線程監(jiān)聽網(wǎng)絡(luò),數(shù)據(jù)能發(fā)出去,但絕對(duì)收不回來,改用子進(jìn)程,可以了,但得加入兩個(gè)進(jìn)程通信的管道以及信號(hào)的注冊(cè)和發(fā)送。4、pc輸入問題:圖形界面還是命令行?圖形界面幾乎不可能,mw中有個(gè)GrNewInputWindow函數(shù),屬性是只可以讀的,也就是不能往上寫數(shù)據(jù),api是這樣寫的,無法解釋,多半是我理解的不對(duì)!如果用GrNewWindow的話,要用到cursor,肯定至少有個(gè)線程監(jiān)聽,估計(jì)這一個(gè)就夠?qū)懸粋(gè)周……只好命令行,線程?算了還是用進(jìn)程穩(wěn)定些,但是命令行輸入的還是utf-8編碼,再fork個(gè)孫子進(jìn)程?那通信得多麻煩,還是使用函數(shù)system吧,把標(biāo)準(zhǔn)輸出文件符改到管道,子進(jìn)程讀、存,再寫管道(為什么不能讀兩次,好像管道是一次性讀吧),父進(jìn)程再讀、存。這時(shí)的輸入是不可printf的(亂碼),但能在mw上正常顯示。
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/41263/showart_706295.html |
|