J'essaie de lire le contenu d'un fichier (qui contient à la fois du texte «standard» et des données «binaires»). Je dois ensuite prendre ce caractère (ASCII standard ou étendu) et obtenir la valeur ASCII décimale (int) correspondante.Lecture de caractères ASCII étendus à partir d'un fichier et conversion en valeur décimale ASCII
J'ai beaucoup de temps pour le faire fonctionner correctement.
Voici un extrait du code pour aider à montrer ce que je suis en train de faire ...
FILE *fp = fopen(file, "r+");
char *value = NULL;
size_t charSize = sizeof(char) + 1;
value = malloc(charSize);
strcpy(value, "0");
fseek(fp, offset, SEEK_SET);
fgets(value, charSize, fp);
int c = (int)value;
free(value);
Je lis une chose qui était en train de dire que vous aviez besoin d'utiliser un unsigned char pour le ascii étendu, mais le changement de unsigned char n'a pas résolu le problème (et a compiler avertissements)
J'ai aussi essayé d'utiliser wchar_t avec le code:
....
wchar_t *value = NULL;
value = malloc(2);
wcscpy(value, (wchar_t *)"");
fseek(fp, offset, SEEK_SET);
fgetws(value, 2, fp);
int c = (int)value;
Aucun de ceux-ci semblent travailler . Je reçois soit un 0 pour pratiquement tout, soit une valeur "aléatoire".
Par exemple en utilisant une des trois que je reçois: valeur:% (correct) c: 76678304 (nombre est différent à chaque fois, mais dans ce même « gamme ») (quelque chose me dit que ce n'est pas correct):)
Je suis évidemment quelque chose de mal, mais je ne peux pas sembler figurer dehors ...
Toute aide serait très apprécié.
qui semble fonctionner très bien pour « % » en utilisant ombles. Dois-je utiliser autre chose pour des ascii étendus ou puis-je encore utiliser char? – kdbdallas
En fait, vous devriez plutôt vous assurer que le type de pointeur array/string est 'unsigned char *' (ou le convertir en tel) avant de le lire. BTW il n'y a pas de "ASCII étendu". –
+1 pour avoir remarqué que l'ajout de distributions explicites pour éviter les avertissements/erreurs indique généralement que le code est erroné au départ. –