2010-04-12 9 views
5

Tutto quello che posso trovare usando fopen() e fwrite() in C è quello di eliminare tutti i contenuti e ricominciare a scrivere o aggiungere alla fine del file. Cosa succede se ho bisogno di andare in qualche offset nel file e sovrascrivere alcuni byte?Come sovrascrivo X byte su offset Y con fwrite()?

È possibile con alcune funzioni?

risposta

8

È possibile aprire il file con l'opzione "rb+" e quindi utilizzare fseek con SEEK_SET per andare in una posizione specifica. Lo rb+ lo apre sia per la lettura che per la scrittura come file binario (il file deve esistere affinché possa avere successo - non creerà un nuovo file).

+0

Questo sovrascriverà solo i byte che desidero e non accoderà? –

+0

La domanda è, eliminerà il resto del file oltre quello che hai scritto? –

+0

@ Nazgulled: Sì: le posizioni SEEK_SET su un offset di byte specifico nel file. SEEK_CUR può anche essere utilizzato per cercare un offset dalla posizione corrente. –

Problemi correlati