打印
[STM32F1]

请教一个字符数据去掉最后的回车键字符的问题

[复制链接]
1034|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzhiyang|  楼主 | 2014-12-7 22:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*在windows下,回车等于 \r\n 在linux下,回车等于 \n */
if(dat->bytes[dat->length-2] != '\r' || dat->bytes[dat->length-1] != '\n')  
{
         if((dat->bytes[dat->length-1] == '\r' || dat->bytes[dat->length-1] == '\n') && (dat->length+1 <= MAX_NAME_SIZE))
         {
                 dat->length += 1; //linux
         }
         else if(dat->length+2 <= MAX_NAME_SIZE)
         {
                 dat->length += 2; //windows
         }
         else
         {
                 dat->length = MAX_NAME_SIZE;        //达到最大值的情况
         }
         //name->bytes[name->length-2] = '\r';         //转化为标准的\r\n两个字符表示回车结束
        //name->bytes[name->length-1] = '\n';         
        dat->bytes[dat->length-2] = '\0'; //加结束符,提取出bytes的数据
}

这段程序是摘自野火的lwip的telnet实验代码,当用户输入了回车键,这段程序才会执行。
例如:dat->bytes[]中存放的就是接收到用户的输入信息的   比如dat->bytes[] = {'a','b','c','d','e','f','\r','\n'};
通过这段程序,是数组里面的内容变成dat->bytes[] = {'a','b','c','d','e','f'};,
但是我实在是看不明白第一个if语句想做什么if(dat->bytes[dat->length-2] != '\r' || dat->bytes[dat->length-1] != '\n')  
看明白的还请指教       

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

190

帖子

2

粉丝