mfonz85
25-06-2007, 18:42
Ciao a tutti,
magari questa domanda può sembrare stupida e ovvia, ma non ho mai trovato una soluzione, nemmeno cercando su google...
Sto facendo 1 programma che fa il parsing di un file .txt formattato stile html, e devo estrapolarne delle informazioni.
Faccio salvare tutte le mie informazioni (caratteri) in dei vettori di interi, per non perdere la codifica su 8 bit che si ha con l'uso di char normali, che vanno in overflow (per testarlo ho usato questo piccolo programmino):
char ch;
int ch2;
while(1) {
ch2 = (int) getch();
ch = (char) ch2;
printf("Codifica char : %d - %c\n", ch, ch);
printf("Codifica int : %d - %c\n", ch2, ch2);
}
Output:
Premuto tasto 't'
Codifica char : 116 - t
Codifica int : 116 - t
--------------------
Premuto tasto 'è'
Codifica char : -118 - è
Codifica int : 138 - è
--------------------
Premuto tasto 'à'
Codifica char : -123 - à
Codifica int : 133 - à
--------------------
Premuto tasto 'ì'
Codifica char : -115 - ì
Codifica int : 141 - ì
Ecco...ci sono svariati casini.
Come faccio a salvarmi le informazioni in modo corretto?
Nel mio programma come ho già detto salvo le lettere che leggo dentro dei vettori di interi, per evitare l'overflow causato dall'utilizzo del semplice char.
Adesso dovrei però usare bene questi caratteri e risalvarli in modo corretto, con codifica 8 bit, su un altro file...
Idee?
Se x esempio provo con un semplice fputc sul file, al posto di salvarmi una 'è' accentata mi salva spazzatura varia...stessa cosa per gli altri caratteri!
Scusate ancora la stupidità della domanda, ma questo problema voglio capirlo una volta x tutte :D
magari questa domanda può sembrare stupida e ovvia, ma non ho mai trovato una soluzione, nemmeno cercando su google...
Sto facendo 1 programma che fa il parsing di un file .txt formattato stile html, e devo estrapolarne delle informazioni.
Faccio salvare tutte le mie informazioni (caratteri) in dei vettori di interi, per non perdere la codifica su 8 bit che si ha con l'uso di char normali, che vanno in overflow (per testarlo ho usato questo piccolo programmino):
char ch;
int ch2;
while(1) {
ch2 = (int) getch();
ch = (char) ch2;
printf("Codifica char : %d - %c\n", ch, ch);
printf("Codifica int : %d - %c\n", ch2, ch2);
}
Output:
Premuto tasto 't'
Codifica char : 116 - t
Codifica int : 116 - t
--------------------
Premuto tasto 'è'
Codifica char : -118 - è
Codifica int : 138 - è
--------------------
Premuto tasto 'à'
Codifica char : -123 - à
Codifica int : 133 - à
--------------------
Premuto tasto 'ì'
Codifica char : -115 - ì
Codifica int : 141 - ì
Ecco...ci sono svariati casini.
Come faccio a salvarmi le informazioni in modo corretto?
Nel mio programma come ho già detto salvo le lettere che leggo dentro dei vettori di interi, per evitare l'overflow causato dall'utilizzo del semplice char.
Adesso dovrei però usare bene questi caratteri e risalvarli in modo corretto, con codifica 8 bit, su un altro file...
Idee?
Se x esempio provo con un semplice fputc sul file, al posto di salvarmi una 'è' accentata mi salva spazzatura varia...stessa cosa per gli altri caratteri!
Scusate ancora la stupidità della domanda, ma questo problema voglio capirlo una volta x tutte :D