一、在编程写网络作业时出现了一个问题,我的思路是客户端的一个字符串传到服务器端被接收之后存放于一个数组中,结果字符数组中除了拿到了客户端的字符串之后,还有一堆的烫字。。。。
烫字的出现是由于未初始化变量造成的,也就是说对于服务器端的字符数组需要我们对其进行初始化一下。
二、解决办法:加上这一句话memset(recvBuf,'\0',sizeof(recvBuf));也就是要对数组进行初始化赋一下值。
三、
四、总结一下memset函数:需要的头文件:<memory.h> or <string.h> <cstring>
void *memset(void *s, int c, size_t n);
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。
函数作用:在一段内存中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
PS:特别是对于字符指针类型的,没有被赋值的剩余的部分通常是不会为0的,不妨作一个试验,定义一个字符数组,并输入一串字符,如果不用memset实现清零,使用MessageBox显示出来就会有乱码(0表示NULL,如果有,就默认字符结束,不会输出后面的乱码) ,上面的例子出现烫字就是因为字符数组剩余部分没有被赋值。
在编程写网络作业时,客户端的字符串通过网络传到服务器端后,字符数组中除了接收到的字符串外,还出现了额外的字符。这通常是因为服务器端的字符数组未被初始化导致的。解决办法是在接收数据后使用memset函数对数组进行初始化,避免出现未知字符。本文详细介绍了memset函数的用法及重要性。
7096

被折叠的 条评论
为什么被折叠?



