Utiliser ANSI au lieu d'ASCII [Résolu]

Signaler
Messages postés
46
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
7 août 2008
-
Messages postés
46
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
7 août 2008
-
Bonjour,

Je dois développer une sorte de serveur en C++, qui permette les transferts de fichiers.
Ayant fait mon serveur et un client adapté, j'essaie d'envoyer une image et une musique.

Le problème, c'est que les deux fichiers utilisent les caractères codés en ANSI, et le problème essentiel réside dans le caractère 0 des deux languages : en ascii, 0 est "NULL", tandis qu'il représente  en ANSI.
Je voudrais donc savoir comment obliger mon programme a utiliser les normes ANSI plutôt qu'ascii (je compile avec dev-cpp).

Merci d'avance

5 réponses

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

NULL est une macro, définie à zéro(0) en C++ et à ((void *)0) en C

que ce soit en Ascii, Ansi, Unicode, etc ... le caractère de fin de chaine est 0, '\0', 0x00, 0x0000, etc ... ==>> 0 ==>> Zéro ...

assure toi de lire/écrire en binaire et non en texte, si ca ne fonctionne toujours pas, regarde au niveau du tranfert des données ... la meilleur solution est de ne pas tenir compte du type des fichiers, tu lis/écris en binaire et c'est tout. sinon, vas-y plus `low-level`, sans stl ...

~(.:: NitRic ::.)~
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Je pige pas trop ce que tu raconte là :
ASCII : American Standard Code for Information Interchange
ANSI : American National Standards Institute
http://fr.wikipedia.org/wiki/ANSI

l'ASCII est un standard crée par l'ANSI pour mapper les caractères à des valeurs numériques stockable par un ordinateur.

A mon avis ton problème vient plutot du fait que tu ne manipules pas tes fichiers en binaire, seul moyen de gérer des images et de la musique. Si tu les ouvre en mode texte les caractères nuls sont effectivement mal géres.
Messages postés
46
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
7 août 2008

Je les ouvres avec ios::binary
Messages postés
46
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
7 août 2008

en ascii, 0 est "NULL", tandis qu'il représente  en ANSI.

Pour ça si tu ne me crois pas consultes des tables.
Messages postés
46
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
7 août 2008

Ok, je savais as que ça représentait aussi la fin de chaîne. Donc naturellement ça passait pas dans le socket (transfert réussi de 0 caractÚres).
Donc ça m'a permi de régler ça, merci.