carattere di controllo '\b'

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

carattere di controllo '\b'

Messaggio 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ì.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: carattere di controllo '\b'

Messaggio 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.

Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: carattere di controllo '\b'

Messaggio 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".

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: carattere di controllo '\b'

Messaggio 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.

Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: carattere di controllo '\b'

Messaggio 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.

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: carattere di controllo '\b'

Messaggio da nuitari »

figurati, è un piacere ^^

Rispondi