微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > 关于linux下C编程的问题1

关于linux下C编程的问题1

时间:10-02 整理:3721RD 点击:

各位高手,小弟正在开发电子词典,使用linux下C编程技术。从网上下载了一个WINDOWS下的电子词典源代码,然后下载了一个dict.txt文件。移植了一小段WINDOWS下的代码到linux下,编译测试发现系统进入死循环。调试了一下,系统进入了以下while死循环中:


unsigned short * translate(unsignedchar* sbuf)


{


         inti=0,j=0;


         intnsize = strlen(sbuf);      //unsignedchar 为单字节,unsigned short 为双字节


         unsignedchar * strbuf = (unsigned char*)calloc(2,nsize+1); //重新为strbuf分配多一倍的字节空间


         while(*(sbuf+i))                               //一直进行转换直到文件末尾                       


         {


                   if(*(sbuf+i)<0x80)         //如果要转换的为单字节时(ASCII)0000-007F: 则转换为0xxx xxxx


                   {


                            *(strbuf+j)=*(sbuf+i);


                            *(strbuf+j+1)=0;


                            i++;


                            j+=2;


                   }                 


                   elseif((*(sbuf+i)&0xe0)==0xc0)  //如果要转换的为双字节 0080-07FF:则转换为110xxxxx 10xxxxxx  


                   {                        


                            *(strbuf+j)=(*(sbuf+i)<<6)|(*(sbuf+i+1)&0x3f);


                            *(strbuf+j+1)=(*(sbuf+i)>>2)&0x07;


                            i+=2;


                            j+=2;


                   }


               else if((*(sbuf+i)&0xf0)==0xe0)  //如果要转换的为三字节 0800-FFFF:则转换为1110xxxx10xxxxxx 10xxxxxx


                   {


                           *(strbuf+j)=(*(sbuf+i+1)<<6)|(*(sbuf+i+2)&0x3f);


                            *(strbuf+j+1)=(*(sbuf+i)<<4)|((*(sbuf+i+1)>>2)&0x0f);


                            i+=3;


                            j+=2;


                   }



                   //i++;


         }


         *(strbuf+j)=0;                                                 //为宽字符集增加结尾标志


         *(strbuf+j+1)=0;


         return(unsigned short *)strbuf;    //将strbuf的类型转化为双字节unsigned short


}

Sbuf缓冲区保存从dict.txt文件中读出的数据,调试发现,不是所有的数据都满足if、else if的条件,导致i值未被更新,使得系统无法退出while循环。请教各位高手,是不是dict.txt文件内容不适合此代码?如果不适合,该去哪里下载dict.txt文件?谢谢!

好的好的好的哈哈哈哈哈哈哈哈哈哈

我是单片机小白,求麦肯单片机 MDT10P509编程软件

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top