我希望在没有实际使用memcpy的情况下完成与memcpy相同的结果。
以下是我想要从memcpy改变的代码。
memcpy((char *) &(serv_addr.sin_addr.s_addr),
(char *)(server->h_addr), server->h_length);
有办法做到这一点吗?
答案 0 :(得分:2)
您可以使用for循环轻松重新编码memcpy
。如果编译器提供内在函数,则可以使用它们。 Gcc有__builtin_memcpy
。但最重要的是你这样做可能是错的,memcpy
在任何地方都使用,并且不会有错误。
答案 1 :(得分:0)
只是一个疯狂的猜测:您在网络上的某个地方找到了此代码,并且意外地将参数撤消到了memcpy()
来电:
memcpy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr,
server->h_length);
只需将它们切换回来,您的运行时错误就会消失。