首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

对未知长度字符串添加结束符'\0'的有关问题

2013-06-26 
对未知长度字符串添加结束符'\0'的问题?举个例子 char* buf new char[1024] sth.recv(buf,10

对未知长度字符串添加结束符'\0'的问题?
举个例子


 char* buf = new char[1024];
 sth.recv(buf,1024) ;// recv函数,读取1024字节的东西存入buf


假如读入的是 I miss u,那么buf就是 I miss u屯屯屯屯屯屯屯屯屯屯屯屯……

出现这样的原因,你们懂的,没有 \0结束符。

那么,在未知长度的情况下,如何添加这个\0结束符,不要告诉我提前memset,这里memset是木有用的,recv之后还是屯。
[解决办法]
引用:
举个例子
C/C++ code

 char* buf = new char[1024];
 sth.recv(buf,1024) ;// recv函数,读取1024字节的东西存入buf



假如读入的是 I miss u,那么buf就是 I miss u屯屯屯屯屯屯屯屯屯屯屯屯……

出现这样的原因,你们懂的,没有 \0结束符。

那么,在未知长度的情况下,如何添加这个\0结束……

在调用sth.recv(buf, 1024)之前,将buf中全部置'\0'就可以了。用下面的方法:
memset(buf, 0, 1024);

修改后的代码形如:

 char* buf = new char[1024];
 memset(buf, 0, 1024);
 sth.recv(buf,1024) ;// recv函数,读取1024字节的东西存入buf


这样绝对不会再出现“屯屯屯屯屯...”这样的东东了。
[解决办法]
if (ch & 0x80 != 0)
{
   ch = '\0';
}
前提是,你确定字符串里没有中文等

热点排行