# [linguaggio C] problema con caratteri speciali

## freax

Notate niente di strano compilando questo codice con gcc per poi eseguirlo ?

```
#include <stdio.h>

main()

{

  printf("ciao\b\a\n");

}
```

premetto che per adesso non posso usare Gentoo in quanto costretto ad usare un altro PC con su Ubuntu 8.10 , Comunque sia uso sempre o nano o gedit per editare e gcc per compilare .

provate a compilare ed eseguire il codice sorgente che ho appena postato ...

----------

## riverdragon

Non noto nulla di strano, cosa dovrei vedere?

----------

## freax

 *riverdragon wrote:*   

> Non noto nulla di strano, cosa dovrei vedere?

 

ho fatto diverse prove , con gnome-terminal e con konsole , manca sempre il carattere speciale di backspace   :Exclamation: 

non mi spiego il perché ma il problema sembra essere del terminale , anche se provandone diversi viene fuori sempre la stessa cosa ...

tu lo vedi il backspace ? cioé visualizzi "cia" o "ciao" ?

----------

## djinnZ

Cerca informazioni sull'antica questione del maledetto ^? contro lo stramaledetto ^H sui vecchi terminali vt100, tektronik, ibm & C (cloni assortiti).

C'è chi (me medesimo per cominciare) ha bestemmiato per anni su questa faccenda, contrariamente a quel che si crede il carattere di backspace non è definito univocamente.

Oltre alla diffrenza nel valore del carattere su alcuni terminali backspace causa solo lo spostamento del cursore (le vecchie console a stampa usavano una sequenza carattere-backspace-carattere per la "doppia scrittura" o grassetto per dirne una) in altri comporta la retrocessione del cursore ed il blanking del carattere.

Tutte queste conversioni sono regolate da crt* o dal database in /usr/share/terminfo per ncurses ad esempio.

Lo scopo dell'esercizio di K&R a provare le varie sequenze di escape era anche far prendere confidenza con questo tipo di differenze tra terminale e terminale sullo stesso sistema. Se consideri che le stesse sequenze ansi per i colori variano significato a seconda delle impostazioni del device non è stanto strano come comportamento e ti fa capire perchè i comitati di standardizzazione in troppi casi hanno solo fatto danno, forse perchè monopolio di cattedratici ed incompetenti.

Onestamente erano anni che non ci pensavo più ma c'era una ragione "validissima" (leggasi "del *****") per questo comortamento.

Così come per l'obbligo di usare le lettere minuscole per i login.

----------

## freax

 *djinnZ wrote:*   

> Cerca informazioni sull'antica questione del maledetto ^? contro lo stramaledetto ^H sui vecchi terminali vt100, tektronik, ibm & C (cloni assortiti).
> 
> C'è chi (me medesimo per cominciare) ha bestemmiato per anni su questa faccenda, contrariamente a quel che si crede il carattere di backspace non è definito univocamente.
> 
> Oltre alla diffrenza nel valore del carattere su alcuni terminali backspace causa solo lo spostamento del cursore (le vecchie console a stampa usavano una sequenza carattere-backspace-carattere per la "doppia scrittura" o grassetto per dirne una) in altri comporta la retrocessione del cursore ed il blanking del carattere.
> ...

 

è tutto questo casino per 1 carattere   :Evil or Very Mad:   :Shocked: 

scherzo , onestamente solo smanettare ti da la possibilità di capire davvero come funziona un sistema operativo e quello che gli gravita intorno , una distro GNU/Linux grazie alla sua modularità amplia di molto il concetto ...

avresti mica qualche documento sull'argomento ? magari anche in inglese , vorrei leggerne di più   :Wink: 

----------

## djinnZ

 *djinnZ wrote:*   

> [omissis] ... antica questione ... [omissis] ... erano anni che non ci pensavo più ... [omissis]

 esattamente cosa non ti è chiaro di simili espressioni?

Tutta roba che risale agli anni '70 (come la stessa definizione di carattere di "escape" che viene dai tempi delle telescriventi se non ricordo male), archeologia pura.

Non ho idea di dove trovare maggiori informazioni forse cercando sulla documentazione unix/vms (la mia è in cantina) oppure cerca un forum sul retrocomputing.

Prova anche a vedere se la biblioteca comunale/provinciale ha qualche libro su unix (ante paccottiglia jackson), un tempo queste cose erano importatini e venivano spiegate.

Oppure prova a vedere se trovi qualcosa nella documentazione di ncurses o sul loro sito.

----------

## freax

 *djinnZ wrote:*   

>  *djinnZ wrote:*   [omissis] ... antica questione ... [omissis] ... erano anni che non ci pensavo più ... [omissis] esattamente cosa non ti è chiaro di simili espressioni?
> 
> Tutta roba che risale agli anni '70 (come la stessa definizione di carattere di "escape" che viene dai tempi delle telescriventi se non ricordo male), archeologia pura.
> 
> Non ho idea di dove trovare maggiori informazioni forse cercando sulla documentazione unix/vms (la mia è in cantina) oppure cerca un forum sul retrocomputing.
> ...

 

cioé le cose più interessanti non se le caga nessuno oggi ?

e che mi frega di saper scrivere un programma in python se poi quando lo eseguo nel terminale non so neanche come funziona ? Veramente non c'è documentazione a riguardo ? Cioé mi pare quanto meno assurda come cosa ...

purtroppo Googlare in effetti non porta a molto ... wikipedia mi dice che il VT100 è stato il primo ad usare le sequenze di escape ma non sono riuscito a trarne molto di più ...

Ho trovato una perla di Rubini sul funzionamento dei terminali , una rapida occhiata e ho capito che è scritta in italiano , 4-5 passate di lettura lenta e ne comprenderò anche il significato ...   :Laughing: 

http://www.linux.it/~rubini/docs/pty/pty.html

ad ogni modo da quello che ho capito il maggior responsabile di questo risultato così inaspettato è ncurses , neanche delle tecniche di gestione della virtualizzazione dell'input/output di un terminale software come spiega il buon Rubini , ma la colpa sarebbe delle API/librerie per il loro uso ...

è più o meno la realtà dei fatti ?

----------

## djinnZ

wikipedia dice una fesseria, le sequenze di escape (come concetto) sono una cosa antica, il vt100 è stato il modello per la corrente implementazione.

Se non altro è un buon modo per comprendere appieno il concetto di legacy e quanto possa essere delirante il mondo in cui viviamo.

Per farti un esempio c'era un tempo in cui i terminali digital, ibm, adds/ncr seriali usavano tutti le seriali ma: ibm usava una 25 pin maschio sul terminale ed una 9 pin femmina sul mainframe, digital ed ncr usavano le 15 pin, maschio dal lato server e femmina sul terninale (e viceversa ncr) mentre adds usava la 25 pin femmina sui terminali.

In pratica funzionava tutto benissimo ed era pienamente compatibile (ma la documentazione ufficiale diceva il contrario ovviamente) ma ti serviva un cavo per ogni singolo modello di terminale. La questione di fondo era che bene o male l'hardware di base era più o meno lo stesso ma non volevano ammetterne la compatibilità.

In pratica, produrre dispositivi realmente incompatibili era economicamente e praticamente insostenibile ma non volevano rinunciare al loro orticello.

I codici speciali dei terminali hanno avuto una evoluzione simile ma alla fine, quando i giganti hanno mollato lo sviluppo degli applicativi all'esterno (rilasciando in massa i sorgenti dei sistemi contabili ai "soliti noti", troppo spesso ex dirigenti bene ammanigliati) serviva a forza una soluzione che consentisse di usare tutto e si sono inventati il compromesso attuale. Quanto poco sia pratico è ovvio.

----------

## freax

 *djinnZ wrote:*   

> wikipedia dice una fesseria, le sequenze di escape (come concetto) sono una cosa antica, il vt100 è stato il modello per la corrente implementazione.
> 
> Se non altro è un buon modo per comprendere appieno il concetto di legacy e quanto possa essere delirante il mondo in cui viviamo.
> 
> Per farti un esempio c'era un tempo in cui i terminali digital, ibm, adds/ncr seriali usavano tutti le seriali ma: ibm usava una 25 pin maschio sul terminale ed una 9 pin femmina sul mainframe, digital ed ncr usavano le 15 pin, maschio dal lato server e femmina sul terninale (e viceversa ncr) mentre adds usava la 25 pin femmina sui terminali.
> ...

 

Grazie anche per aver scritto queste poche righe , in effetti ci sono tante cose che non mi spiego nel mondo dell'informatica e nella sua presunta "evoluzione" , ricordo di quando lessi dei primi alimentatori ATX , quando la DELL ne fece uno pari pari allo standard ma invertendo i cavi nello schema , e mi chiesi che senso avesse per il mondo una cosa del genere ... cioé serviva a bruciare prima una scheda madre ? Misteri del business e dei marchi ...

Ovviamente qui si parla di diritti su ciò che uno ha "intellettualmente" prodotto , e condividere con gli altri e liberamente tali scoperte è forse poco remunerativo e anche poco sicuro come modello di business (per dirla in modo elegante ...) , c'è gente che crede che l'open sia la panacea di tutti i mali senza rendersi conto che magari sta facendo da beta tester e pure gratis per grandi società che da par loro hanno ben altri mezzi ...

Ma il problema vero si ha quando c'è scarsa documentazione e quel poco che c'è viene scritto con il linguaggio del marketing ...

A questo punto ti chiedo solo se hai da consigliarmi qualche libro sulle comunicazioni a basso livello

----------

