/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
fprintf(), fputc()
Fra : Niels


Dato : 12-05-03 22:14

Hej,

er der en paen maade hvordan jeg kan skrive en unsigned int til en fil?
Det skal vaere paa binaer form, altsaa ikke ASCII, hvorved jeg saa ikke
kan bruge fprintf().
Hidtil har jeg altid brudt tallet op i enkelte bytes som jeg saa skref
til en stream ved fputc(), men der maa vel vaere en mere elegant metode?
Et tal vil jeg skrive som et 4-byte ord (unsigned) paa formen
   lsb 2.byte 3.byte msb
men det ville vaere en fordel hvis der fantes en funktion hvor man selv
kan definere formen eller lign.?

Nogen forslag?

mvh
Niels

 
 
Jakob Nielsen (12-05-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 12-05-03 22:19

> er der en paen maade hvordan jeg kan skrive en unsigned int til en fil?
> Det skal vaere paa binaer form, altsaa ikke ASCII, hvorved jeg saa ikke
> kan bruge fprintf().

fwrite kan bruges




Bertel Brander (12-05-2003)
Kommentar
Fra : Bertel Brander


Dato : 12-05-03 22:33

Niels skrev:
> Hej,
>
> er der en paen maade hvordan jeg kan skrive en unsigned int til en fil?
> Det skal vaere paa binaer form, altsaa ikke ASCII, hvorved jeg saa ikke
> kan bruge fprintf().
> Hidtil har jeg altid brudt tallet op i enkelte bytes som jeg saa skref
> til en stream ved fputc(), men der maa vel vaere en mere elegant metode?
> Et tal vil jeg skrive som et 4-byte ord (unsigned) paa formen
>    lsb 2.byte 3.byte msb
> men det ville vaere en fordel hvis der fantes en funktion hvor man selv
> kan definere formen eller lign.?
>

Hvis du kan stille dig tilfreds med den rækkefølge som din compiler
vælger at gemme dem i på den platform hvor du gemmer dem kan du bruge
fwrite (& fread til at læse dem tilbage). Hvis ikke er du nød til at
bruge fputc.

/b


Niels (12-05-2003)
Kommentar
Fra : Niels


Dato : 12-05-03 22:52

On Mon, 12 May 2003 23:32:57 +0200, Bertel Brander wrote:

> Niels skrev:
>> Hej,
>>
>> er der en paen maade hvordan jeg kan skrive en unsigned int til en fil?
>> Det skal vaere paa binaer form, altsaa ikke ASCII, hvorved jeg saa ikke
>> kan bruge fprintf().
>> Hidtil har jeg altid brudt tallet op i enkelte bytes som jeg saa skref
>> til en stream ved fputc(), men der maa vel vaere en mere elegant
>> metode? Et tal vil jeg skrive som et 4-byte ord (unsigned) paa formen
>>    lsb 2.byte 3.byte msb
>> men det ville vaere en fordel hvis der fantes en funktion hvor man selv
>> kan definere formen eller lign.?
>>
>>
> Hvis du kan stille dig tilfreds med den rækkefølge som din compiler
> vælger at gemme dem i på den platform hvor du gemmer dem kan du bruge
> fwrite (& fread til at læse dem tilbage). Hvis ikke er du nød til at
> bruge fputc.
>
> /b

Tak for svarene!
Ville dog have vaeret rarest med en platformuaf. loesning. (Men det kan
vel klares med nogle checks, saa den ikke kan kompileres hvis det ikke er
lsb msb paa en eller anden maade).

mvh
Niels

Jakob Nielsen (13-05-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 13-05-03 10:14

> Ville dog have vaeret rarest med en platformuaf. loesning. (Men det kan
> vel klares med nogle checks, saa den ikke kan kompileres hvis det ikke er
> lsb msb paa en eller anden maade).

Løsningen er som sådan platformuafhængig... dine datafiler skrevet i et
system kan bare ike nødvendigvis bruges ved indlæsning i et andet.
Programmet som sådan virker perfekt på alle platforme.



Kent Friis (13-05-2003)
Kommentar
Fra : Kent Friis


Dato : 13-05-03 15:42

Den Mon, 12 May 2003 23:52:16 +0200 skrev Niels:
>On Mon, 12 May 2003 23:32:57 +0200, Bertel Brander wrote:
>
>> Niels skrev:
>>> Hej,
>>>
>>> er der en paen maade hvordan jeg kan skrive en unsigned int til en fil?
>>> Det skal vaere paa binaer form, altsaa ikke ASCII, hvorved jeg saa ikke
>>> kan bruge fprintf().
>>> Hidtil har jeg altid brudt tallet op i enkelte bytes som jeg saa skref
>>> til en stream ved fputc(), men der maa vel vaere en mere elegant
>>> metode? Et tal vil jeg skrive som et 4-byte ord (unsigned) paa formen
>>>    lsb 2.byte 3.byte msb
>>> men det ville vaere en fordel hvis der fantes en funktion hvor man selv
>>> kan definere formen eller lign.?
>>>
>>>
>> Hvis du kan stille dig tilfreds med den rækkefølge som din compiler
>> vælger at gemme dem i på den platform hvor du gemmer dem kan du bruge
>> fwrite (& fread til at læse dem tilbage). Hvis ikke er du nød til at
>> bruge fputc.
>>
>> /b
>
>Tak for svarene!
>Ville dog have vaeret rarest med en platformuaf. loesning. (Men det kan
>vel klares med nogle checks, saa den ikke kan kompileres hvis det ikke er
>lsb msb paa en eller anden maade).

Så kig på htons/htonl og ntohs/ntohl

n=network byte order
h=host byte order
l=long int
s=short int

så htons = host byte order to network byte order, short int.

Mvh
Kent
--
If I wanted a blue screen, I would type "xsetroot -solid blue"
- not D:\WINNT\SETUP

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste