我希望能够实现与memcpy相同的结果,而不用实际使用memcpy。找到一种不使用memcpy就能完成memcpy的方法
这是我想从memcpy改变的代码。
memcpy((char *) &(serv_addr.sin_addr.s_addr),
(char *)(server->h_addr), server->h_length);
有没有办法做到这一点?
我希望能够实现与memcpy相同的结果,而不用实际使用memcpy。找到一种不使用memcpy就能完成memcpy的方法
这是我想从memcpy改变的代码。
memcpy((char *) &(serv_addr.sin_addr.s_addr),
(char *)(server->h_addr), server->h_length);
有没有办法做到这一点?
您可以使用for循环轻松地重新编码memcpy
。如果编译器提供内在函数,则可以使用它们。 Gcc有__builtin_memcpy
。但最重要的是,你这样做可能是错误的,memcpy
在任何地方都可以使用,而且不可能是越野车。
只是胡乱猜测:您发现此代码的某个地方在网络上,并意外地扭转了参数的memcpy()
电话:
memcpy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr,
server->h_length);
只需切换回,你的运行时错误就会消失。
你为什么要这么做? –
memcpy导致错误,并修复我将不得不重新安装操作系统。 – user1601045
答案当然是“是”。 'memcpy'是重新实现自己的一个相当平凡的函数。 –