Pagina 1 di 1

carattere di controllo '\b'

Inviato: mer 4 feb 2009, 11:37
da ulisse89
Ciao tutti. Scusate per la domanda che magari è stupida ma a cui non trovo soluzione. Sto facendo un piccolo programma in c compilando con gcc. Ho bisogno a un certo punto di cancellare un carattere da file e al suo posto scriverne un altro per cui ho usato la funzione fprintf e per cancellare, il carattere di controllo '\b'. Però sul file non viene cancellato niente anzi mi viene accodato un carattere strano di cui non conosco il nome (quello a forma di rettangolo). Sembra che il carattere di controllo '\b' non funzioni a dovere. Per controllare ho provato con una printf a usarlo per cancellare caratteri da video ma non funziona nemmeno lì.
Per cui la mia domanda è se qualcuno sa il motivo e semmai come risolverlo.
Grazie.

ps: spero di non esseremi spiegato male, anche se credo sia così.

Re: carattere di controllo '\b'

Inviato: mer 4 feb 2009, 16:19
da Mario Vanoni
ulisse89 ha scritto:Ciao tutti. Scusate per la domanda che magari è stupida ma a cui non trovo soluzione. Sto facendo un piccolo programma in c compilando con gcc. Ho bisogno a un certo punto di cancellare un carattere da file e al suo posto scriverne un altro per cui ho usato la funzione fprintf e per cancellare, il carattere di controllo '\b'. Però sul file non viene cancellato niente anzi mi viene accodato un carattere strano di cui non conosco il nome (quello a forma di rettangolo). Sembra che il carattere di controllo '\b' non funzioni a dovere. Per controllare ho provato con una printf a usarlo per cancellare caratteri da video ma non funziona nemmeno lì.
Per cui la mia domanda è se qualcuno sa il motivo e semmai come risolverlo.
Grazie.

ps: spero di non esseremi spiegato male, anche se credo sia così.
Soluzione sbagliata per il tuo problema, prova:
echo -e 'i\b_' | cat -v
echo -e 'i\b_' | lp
ti stampa una i sottolineata.

Re: carattere di controllo '\b'

Inviato: gio 5 feb 2009, 9:19
da ulisse89
Innanzitutto grazie della risposta. Però 1)non capisco cosa vuol dire soluzione sbagliata al mio problema; 2) ho provato il primo comando stampa "i^H_" mentre se tolgo il cat -v allora mi stampa solo il trattino basso. Il secondo comando mi da "error scheduler not responding".

Re: carattere di controllo '\b'

Inviato: gio 5 feb 2009, 10:48
da nuitari
Non puoi usare il carattere di cancellazione per eliminare il carattere precedente in un file, i file non sono strutture dati così semplici. Se scrivi un carattere di cancellazione in un file, viene scritto il codice corrispondente, non è che si sposta il puntatore all'indietro.

Hai due possibilità principali:
1) caricare l'intero file in un buffer di memoria, alterarlo comodamente quindi sovrascrivere completamente l'originale (indicato con file di piccole dimensioni).
2) posizionarti sul carattere che vuoi modificare e, spostando continuamente il puntatore, sovrascrivere un carattere alla volta il contenuto del file da quel punto in poi, troncandolo alla fine.

Re: carattere di controllo '\b'

Inviato: gio 5 feb 2009, 11:51
da ulisse89
In effetti nel primo modo ce la faccio, l'unica cosa è che mi tocca riscrivere tutto, più la variabile che devo cambiare. Comunque il problema è risolto quindi almeno posso andare avanti col programma. Grazie del consiglio.
Ciao.

Re: carattere di controllo '\b'

Inviato: gio 5 feb 2009, 12:16
da nuitari
figurati, è un piacere ^^