Saut de ligne dans un fichier binaire/texte

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 20 févr. 2005 à 13:24
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 22 févr. 2005 à 18:53
Salut,

Quel est l'équivalent de "\n" et de "\t" en binaire. J'ai essayé 13 pour remplacer le "\n". Mais lorsque j'ouvre le fichier généré avec bloc-note, les retours à la ligne sont représentés par des carrés. Par contre quand j'ouvre le fichier avec Visual Studio, les saut de lignes sont correctement effectués et représentés.

Pendant que j'y suis, sous Windows XP, les noms des icones du bureau sont affichés avec de la transparence. Or apres une mauvaise manip', Windows n'affiche plus les ces noms avec de la transparence mais en utilisant come couleur de fond une couleur homogène (comme sous les vieilles versions de Windows).
Comment rétablir la transparence ?

Merci
A voir également:

12 réponses

addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 13:34
Le '\n' c'est 13 suivi par 10, il faut mettre les deux à la suite 13 et 10.
Mais pour le '\t' je ne sais pas.
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 14:18
Pour le '\t', je viens de regarder et à priori ça m'a l'air d'être 9.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 févr. 2005 à 14:34
La valeur de '\n' c'est '\n', 13 n'est pas la représentation binaire de
l'entier '\n' mais decimal, et cette valeur n'est pas portable.



mais pourquoi tu veux connaitre la valeur de '\n' et '\t' ?
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 14:46
Naturellement que 13 10 (pas 13 tout court) est la représentation décimale et pas binaire du retour à la ligne (mais c'est plus pratique de dire 13 10 que tout un tas de 0 et de 1).
Si on écrit dans un fichier en binaire et que l'on veut ensuite avoir un retourà la ligne en l'ouvrant avec un éditeur de texte, il faut écrire les deux entiers 13 et 10.
Et je viens de voir que c'est 9 pour la tabulation.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 févr. 2005 à 15:25
et à quoi ca sert d'ecrire 13 si c'est égale à la constante '\n' ? pourquoi ne pas ecrire directement '\n' ?
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 15:53
Par exemple si on veut modifier des chaînes de caractères dans un fichier binaire, c'est utile puisque dans ce cas là on est obligé d'ouvrir le fichier en binaire pour le lire et le modifier.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 févr. 2005 à 16:02
je ne comprends toujours pas à quoi ca sert de se servir de la valeur 13 au lieu de '\n'.



si '\n' == 13 alors

char i = 13;

fwrite( &i, 1, 1, file );

est équivalent à

char i = '\n';


fwrite( &i, 1, 1, file );
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 16:24
Déjà le retour à la ligne c'est 13 puis 10 (pas 13 tout seul) et il n'y a pas que le C, le \n ne marche pas toujours et dès fois ça peut-être pratique de savoir que c'est 13 puis 10 qu'il faut écrire pour mettre un retour à la ligne.
Et de toute manière je ne faisais que réponde à Galmiza qui posait la question car s'il obtient des carrées à la place du retour à la ligne, c'est justement parce qu'il écrivait seulement 13 à la place de 13 puis 10.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 févr. 2005 à 17:00
mais ca sert rien de savoir que c'est 13 suivi de 10, c'est '\n' suivi de '\r' sous windows si tu veux, cad l'entier '\n\r'



tu crois pas que c'est plus simple d'ecrire ?

short i = '\n\r';

fwrite( &i, sizeof i, 1, file );
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
20 févr. 2005 à 17:15
Et si par exemple je veux mettre un retour à la ligne entre "truc" et "bidule" en Visual Basic, je fais "truc" & Chr(13) & Chr(10) & "bidule".
Voilà comme je l'ai dit, il n'y a pas que le langage C/C++ et au moins de savoir que c'est 13 suivi de 10, ça marche sur tous les langages sous Windows et même si on a un trou de mémoire pour le \n ou pour le je ne sais quoi pour un autre langage, on peut s'en tirer et mettre un retour à la ligne grâce à ça.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 févr. 2005 à 17:42
oui, dans ce contexte la ca ce justifie
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
22 févr. 2005 à 18:53
Merci pour ces réponses.

En fait c'est pour éviter d'utiliser fopen & co car ça augmente énormement la taille de l'exe (6 ko).
Je préfère donc utiliser WriteFile(). Je ne génère le fichier qu'au dernier moment. Je sauve toutes les données dans un tableau de BYTE avant.

Et sinon vous savez comment resoudre le probleme avec la transparence des textes sous les icônes sur le bureau sous windows ?

Encore merci !
0
Rejoignez-nous