Prvo pogledaj prototip metode write.
Dakle možemo vidjeti da write ima dva parametra, prvi je deklariran kao pokazivač na char, a drugi kao int.
Prvi argument koji ćeš proslijediti metodi write govori gdje se u memoriji nalaze charovi koje želiš zapisati u stream (memorijska adresa), dok drugi argument govori funkciji koliko tih charova želiš zapisati (odnosno koliko je niz dug) u stream.
Ako pogledaš spornu liniju koda vidjet ćeš da se prvo uzima adresa prvog elementa polja 'p' i potom se ta memorijska adresa casta u char pointer baš kao što metoda write i zahtjeva. Drugi argument je sizeof operator primijenjen na polje 'p'. Budući da sizeof operator vraća veličinu u bajtovima neke varijable (u ovom slučaju polja), dobit ćeš količinu bajtova koje to polje zauzima u memoriji. A kako je 1 char = 1 bajt tako si automatski dobio duljinu u charovima.
U C-u i C++-u char tip se koristi za pristup memoriji na razini bajtova, stoga ćeš često vidjeti da se char koristi i za stvari koje nemaju veze sa tekstom, ponekad je to prikriveno iza nekakvog typedefa ali sve je to isti drek.
Btw. jesi li siguran da doista želiš vršiti append na datoteku?
Hvala ti, malo je jasnije sada..zasto je koristeno ovo binary, a ne recimo da se spremi u neku datoteku.txt? Kako ja mogu otvorit .bin datoteku uopce da mogu vidjet sta je zapisano? Pokusao sam otvoriti u notepadu ali sve sto sam dobio su neki kvadratici..
Što sam ja na kraju dobio uopce sa tim programom? o.O
A sto se tice ovo append na datoteku, to nije toliko bitno valjda, to je samo da se nadodaje u datoteku a ne da se sve brise svaki put.
Bi znao neko ovo rijesit:
Zad:
Napišite program koji će sve zapise iz formatirane (tekstualne) datoteke "stara.txt" prepisati u novu neformatiranu datoteku "nova.dat". Datoteka stara.txt sadrži sljedeće:
Ivo Ivic 1980.5
Ana Anic 2000.80
Pero Peric 4504.07