2012-09-27 54 views
-4

我希望能夠實現與memcpy相同的結果,而不用實際使用memcpy。找到一種不使用memcpy就能完成memcpy的方法

這是我想從memcpy改變的代碼。

memcpy((char *) &(serv_addr.sin_addr.s_addr), 
    (char *)(server->h_addr), server->h_length); 

有沒有辦法做到這一點?

+2

你爲什麼要這麼做? –

+0

memcpy導致錯誤,並修復我將不得不重新安裝操作系統。 – user1601045

+0

答案當然是「是」。 'memcpy'是重新實現自己的一個相當平凡的函數。 –

回答

2

您可以使用for循環輕鬆地重新編碼memcpy。如果編譯器提供內在函數,則可以使用它們。 Gcc有__builtin_memcpy。但最重要的是,你這樣做可能是錯誤的,memcpy在任何地方都可以使用,而且不可能是越野車。

0

只是胡亂猜測:您發現此代碼的某個地方在網絡上,並意外地扭轉了參數的memcpy()電話:

memcpy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, 
    server->h_length); 

只需切換回,你的運行時錯誤就會消失。