dovrei usare stringhe di caratteri ma non capisco dalle guide trovate online come gestirle agevolmente
In C le stringhe non sono dati primitivi come i numeri, ma vengono "simulate" attraverso array, quindi ogni operazione su una stringa è un'operazione su uno o più array effettuata tramite un'apposita funzione della libreria string.h Mi sembra che tra i vari link ci siano delle spiegazioni semplici (non li ho sotto mano al momento), eventualmente posta quella non chiara e vediamo dov'è il dubbio.
In termine di codice Ascii. Se io scrivo ciao e CIAO non viene ritornato 0 perchè i caratteri maiuscoli in termini ascii hanno un
offset di 32 (in meno) rispetto a quelli minuscoli.
Altro problema: che codifica viene usata implicitamente nel C per rappresentare caratteri non compresi nel set ASCII?
Codice: Seleziona tutto
#include <stdio.h>
#include <string.h>
void main(void)
{
char s[] = "€©€";
int i = 0;
while (s[i] != '\0') ++i;
printf("\n\nLunghezza con strlen simulata: %d\n", i);
i = strlen(s);
printf("Lunghezza con strlen vera: %d\n", i);
printf("\nBytes che compongono l'array:\n");
for (i=0; i<=strlen(s); i++)
printf("\t%d\n", 0xFF&s[i]);
}
Risultato:
Codice: Seleziona tutto
Lunghezza con strlen simulata: 8
Lunghezza con strlen vera: 8
Bytes che compongono l'array:
226
130
172
194
169
226
130
172
0
EDIT: ok, Python mi dice che è utf-8:
Codice: Seleziona tutto
>>> tuple(ord(c) for c in u"€©€".encode("utf_8"))
(226, 130, 172, 194, 169, 226, 130, 172)
Come faccio a sapere/decidere che codifica viene/verrà usata? Dipende dall'editor? Dal compilatore?