fprintf et retour à la ligne

fprintf et retour à la ligne - C - Programmation

Marsh Posté le 02-10-2009 à 22:52:21    

Bonjour,
 
J'ai pas trop l'habitude d'utiliser les fonction c standard pour les i/o (en général j'utilise l'api Win32), mais la je dois les utiliser et je viens de tomber sur un truc qui me semble bizarre :
 
  FILE* f = fopen("C:\\test.txt", "w" );
  fprintf(f, "e\r\nz" );
  return 0;
 
Ca me génère un fichier qui contient e\r\r\nz (\n a été remplacé par \r\n, du coup je me retrouve avec deux \r).
C'est normal ca?
Je précise que c'est sous windows avec VC++ 2005
 
 
S'il vous plait me dites pas d'ouvrir f en mode binaire car ca me dérange pas que \n soit transformé en \r\n, mais pas si ya déja un \r devant le \n

Message cité 1 fois
Message édité par pseudo0908 le 02-10-2009 à 22:54:13
Reply

Marsh Posté le 02-10-2009 à 22:52:21   

Reply

Marsh Posté le 03-10-2009 à 09:11:24    

pseudo0908 a écrit :


S'il vous plait me dites pas d'ouvrir f en mode binaire car ca me dérange pas que \n soit transformé en \r\n, mais pas si ya déja un \r devant le \n


Ben justement, si t'ouvres le fichier en "wb", il n'y aura pas transformation de "\n" en "\r\n" (putain qu'est-ce qu'ils peuvent être chiant sous zindow avec cette façon de gérer les fichiers textes !!!) et donc t'auras que ce que toi tu y écris...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 03-10-2009 à 18:25:33    

Il me semble qu'en C on met simplement fprintf(f, "e\n" );
Le système d'exploitation se charge de traduire le \n en \r\n pour Windows et \n pour Linux.
Par contre je crois que ça fonctionne moins bien pour le fgets (lecture sous Windows de fichiers textes Linux et inversement).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed