Discussione:
Inserire testo in un file
(troppo vecchio per rispondere)
Raziel
2015-11-08 19:35:19 UTC
Permalink
Salve!

Ho un dubbio: voglio aprire un file di testo, trovare una
certa posizione indicata da un marker, e dopo questo marker
inserire del testo.

Il mio dubbio è: generalmente, quando sposto la posizione
del cursore all'interno di un file (con fseek/lseek) e poi
scrivo all'interno di un file, quello che ottengo è che il
precedente contenuto viene sovrascritto.

Mi chiedevo: c'è qualche flag particolare da passare alla
open o qualche altro "trucco" fornito dal sistema operativo
(nel mio caso GNU/Linux) oppure bisogna semplicemente fare
un po' di giochini con il file (a mano, intendo)?

Grazie in anticipo.
f***@gmail.com
2015-11-08 21:26:39 UTC
Permalink
Post by Raziel
Salve!
Ho un dubbio: voglio aprire un file di testo, trovare una
certa posizione indicata da un marker, e dopo questo marker
inserire del testo.
Il mio dubbio è: generalmente, quando sposto la posizione
del cursore all'interno di un file (con fseek/lseek) e poi
scrivo all'interno di un file, quello che ottengo è che il
precedente contenuto viene sovrascritto.
Mi chiedevo: c'è qualche flag particolare da passare alla
open o qualche altro "trucco" fornito dal sistema operativo
(nel mio caso GNU/Linux) oppure bisogna semplicemente fare
un po' di giochini con il file (a mano, intendo)?
Grazie in anticipo.
Apri il file originale e il file finale. Copi byte-byte dall'inizio fino al
marker, scrivi quello che devi inserire sul finale, finisci di copiare
byte-byte.

Ciao!
enoquick
2015-11-09 03:05:01 UTC
Permalink
Post by Raziel
Salve!
Ho un dubbio: voglio aprire un file di testo, trovare una
certa posizione indicata da un marker, e dopo questo marker
inserire del testo.
Il mio dubbio è: generalmente, quando sposto la posizione
del cursore all'interno di un file (con fseek/lseek) e poi
scrivo all'interno di un file, quello che ottengo è che il
precedente contenuto viene sovrascritto.
Mi chiedevo: c'è qualche flag particolare da passare alla
open o qualche altro "trucco" fornito dal sistema operativo
(nel mio caso GNU/Linux) oppure bisogna semplicemente fare
un po' di giochini con il file (a mano, intendo)?
Grazie in anticipo.
non c'è trucco ne inganni, linux non è windows che magari esiste qualche
api non documentata

http://linux.die.net/man/3/open
Giovanni
2015-11-19 09:57:04 UTC
Permalink
Mi chiedevo: c'è qualche flag particolare da passare alla open o
qualche altro "trucco" fornito dal sistema operativo (nel mio caso
GNU/Linux) oppure bisogna semplicemente fare un po' di giochini con
il file (a mano, intendo)?
Nessuna flag. In C puoi solo aprire il file in "append" per inserire
testo alla fine. Qualsiasi altra funzionalità deve essere gestita "a
mano". Come i vari editor che in genere lavorano su una copia.

Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
< http://giovanni.homelinux.net/ >
a***@gmail.com
2015-11-26 20:23:51 UTC
Permalink
Per me si potrebbe risolvere
nel seguente modo
Apri solo per leggere il primo file
apri solo x scrivere il secondo file
.1: Prendi un carattere dal Ifile
se tale carattere é EOF goto .2
se tale carattere é il carattere da espandere
scrivi l'espansione nel IIfile goto .1
altrimenti scrivi tale carattere nel IIfile
goto .1
.2: Chiudi i due file controllando che i 2 fclose
nn ritorni error
se nn ritornano error: Elimina il Ifile
rinomina il IIfile col nome del Ifile

Continua a leggere su narkive:
Loading...