2016-02-18 21 views
5

Konwertuję kod C++ z Windowsa do pracy pod Linuksem i natknąłem się na tę funkcję "vsprintf_s". Jest to funkcja specyficzna dla Microsoft, więc chciałbym zapytać, czy istnieje wymiana w systemie Linux? DziękiZamiennik dla MS vsprintf_s na Linux?

+3

Patrz [Czy używasz funkcji TR 24731 "bezpieczne"?] (Https://stackoverflow.com/questions/372980/do-you-use-the-tr-24731-safe-functions), aby uzyskać informacje o Funkcje '* _s()' nie są bezpośrednio dostępne za pośrednictwem bibliotek innych niż Microsoft - np. niedostępne w systemach Linux i Mac OS X. Nie, nie są one bezpośrednio dostępne. Możesz uzyskać całkiem blisko z 'vsnprintf()', ale są zdecydowanie różnice w sekwencji wywołania (wiele różnic). –

+1

Zobacz [to] (http://stackoverflow.com/questions/4785381/replacement-for-ms-vscprintf-on-macos-linux). – Martin

+0

@Martin łącze rozwiązać problem dla funkcji _vscprintf, która jest inna niż vsprintf_s –

Odpowiedz

3

Wygląda na to, że vsnprintf() będzie odpowiednim zamiennikiem zgodnie z linux.die.net.

+3

Jest blisko, ale zachowania związane z przepełnieniem są zupełnie inne. 'vsprintf_s' przerywa program podczas próby przepełnienia. 'vsnprintf' obcina wyjście i kontynuuje. – user4581301

Powiązane problemy