gelesztamás (statz) | #24, Balfasz (26) |
1070 | #42a8 | ^ | Idézet | Mon, 10 Apr 2017 22:40:45 +02 |
80.99.*.* | *.catv.broadband.hu |
Nem vagyok winfosfan, de rengeteg C könyvtárban vannak hasonlóan használandó függvények, amiket kétszer kell hívni. Az első hívás azért kell, hogy tudd, mekkora lesz az adat amit visszakapsz a második hívással. Így tudsz pont akkora memóriát foglalni a malloc()-cal, és nem kell feleslegesen nagy memóriát foglalnod vagy túl kicsit, amibe nem fér be az adat. Ez nagyon sok helyen célszerű tud lenni, mert így mindig tudod, hogy mekkora területeket kell foglalni. Például snprintf()-nél is jól jön: char *nev = "Gipsz Jakab"; int kor = 43; /* 1. hívás: csak a célsztring mérete érdekel */ int meret = snprintf(NULL, 0, "Név: %s Életkor: %d", nev, kor); char szoveg[meret+1]; /* a +1 a lezáró nullkarakternek kell */ /* 2. hívás: tényleges kiírás a sztringbe */ snprintf(szoveg, meret+1, "Név: %s Életkor: %d", nev, kor); |