我希望能夠實現與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'是重新實現自己的一個相當平凡的函數。 –