/*在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')
看明白的还请指教
|