PDA

Visualizza la versione completa : [c]caratteri speciali


cristianc
02-08-2008, 10:57
Ciao,
Nel c viene usato spesso un carattere speciale detto newline che si scrive cosi': '\n' e anche uno detto di tabulazione: '\t'.

Siccome attraverso il primo carattere se ne deduce che il c 'sente' la console, cioe' e' in grado di sapere dov'e' il cursore per andare a capo, vi domandavo come faccio a fare in modo che se il codice incontra la stampa di alcuni caratteri nella printf e la digitazione di questi superino la fine della linea, il programma prima di stamparli vada a capo. Non e' impossibile ma non so come si fa'.
Qual'e' la procedura e la sintassi esatta?

In piu' mi serviva un carattere che essendo il cursore in una certa posizione,tornasse al'inizio della riga corrente.

Infine mi seviva un carattere newline o di tabulazione verticale all'incontrario, che cioe' che spostasse il cursore di una riga sopra, cioe' di quella precedente.

Vi ringrazio per tutte le risposte che vorrete darmi.

MItaly
02-08-2008, 17:26
Originariamente inviato da cristianc
Ciao,
Nel c viene usato spesso un carattere speciale detto newline che si scrive cosi': '\n' e anche uno detto di tabulazione: '\t'.

Siccome attraverso il primo carattere se ne deduce che il c 'sente' la console, cioe' e' in grado di sapere dov'e' il cursore per andare a capo,
No, il C si limita a passare il carattere in questione allo stream sottostante stdout, che solitamente è gestito dal sistema operativo, il quale decide autonomamente cosa fare dei caratteri (ad esempio se stdout corrisponde ad una console la parte del sistema operativo che si occupa della console si occuperà di effettuare un ritorno a capo, se stdout è reindirizzato ad un file il carattere \n verrà semplicemente scritto nel file).
Le operazioni "di fino" sulla console non sono previste esplicitamente dal C perché esso considera stdout uno stream di output, e sugli stream sono consentite solo determinate operazioni che più o meno qualunque periferica di output (terminale virtuale, terminale fisico, file, stampante) può eseguire. Per lavorare con precisione sulla console quindi ti devi affidare alle API specifiche che il tuo sistema operativo ti mette a disposizione, eventualmente appoggiandoti a librerie multipiattaforma come le ncurses.

cristianc
02-08-2008, 17:34
replico solo per specificare che non mi servono le ncurses perche' non mi devo spostare con il cursore nella console a tempo di esecuzione(per esempio attraverso i tasti freccia), bensi' gli devo far fare le operazioni che ho elencato assolutamente analoghe alle stesse di \n e \t, che penso siano dei caratteri ASCII.
Ci sono degli altri caratteri ascii che consentano allo stesso modo di fare quest'altre operazioni?
Lo ripeto perche' e' vero che \n viene passato allo stdout ma comunque e' un carattere usato nel c per interagire con la console(infatti va a capo a prescindere dalla posizione in cui si trova).

grazie per la risposta comunque. :)

MItaly
03-08-2008, 16:35
L'unico altro carattere di controllo che viene gestito correttamente dalla maggior parte dei dispositivi è il backspace ('\b'), che sposta la posizione di inserimento dei caratteri indietro di un carattere.

Loading