begin process at 2010 09 06 12:36:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RETOURS À LA LIGNE : UNIX => WINDOWS

RETOURS À LA LIGNE : UNIX => WINDOWS


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Niveau :Débutant Date de création :08/02/2004 Vu / téléchargé :3 488 / 72

Auteur : Chouchou182

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Un petit code pas bien complexe mais dont j'avais besoin donc j'en fait profiter tout le monde.

Il permet de remplacer dans un fichier les retours à la ligne de chez unix (\n) par ceux que l'on retrouve sous windows(\r\n).

En plus c'est pas très fonctionnel parce qu'il n'y a pas de fonction parcourir pour trouver le fichier à étudier.

Commentaires constructifs bienvenus.

Chouchou

Source

  • BOOL Convertir(char* src, char* dst)
  • {
  • // On vérifie que l'utilisateur a bien rentré deux noms pour les fichiers
  • if ( !strcmp(src, "") )
  • {
  • MessageBox(0, "Il faut rentrer le nom du fichier source", 0, 0) ;
  • return 1 ;
  • }
  • if ( ! strcmp(dst, "") )
  • {
  • MessageBox(0, "Il faut rentrer le nom du fichier de destination", 0, 0) ;
  • return 1 ;
  • }
  • // On ouvre le fichier source
  • FILE* pFile ;
  • char* ctmp ;
  • if ( NULL == ( pFile = fopen(src, "r") ) )
  • {
  • MessageBox(0, "Le fichier source n\'existe pas", 0, 0) ;
  • return 1 ;
  • }
  • // On récupère la taille du fichier
  • size_t taille ;
  • fseek(pFile, 0, SEEK_END) ;
  • taille = ftell(pFile) ;
  • rewind(pFile) ;
  • ctmp = new char[taille] ;
  • // Lecture du fichier pour le stocker dans un tableau
  • fread(ctmp, sizeof(char), taille, pFile ) ;
  • // En fin de traitement, on ferme le fichier
  • fclose(pFile) ;
  • char* FinalFile = new char[2 * taille] ; // C'est trop mais ca évite de calculer la taille exacte
  • // On recopie le tableau en insérant \r avant chaque \n
  • unsigned posSrc, posDst ;
  • for ( posSrc = 0, posDst = 0 ; posSrc < taille ; )
  • {
  • if ( ctmp[posSrc] == '\n' )
  • {
  • FinalFile[posDst++] = '\r' ;
  • FinalFile[posDst++] = '\n' ;
  • posSrc++ ;
  • }
  • else
  • FinalFile[posDst++] = ctmp[posSrc++] ;
  • }
  • // Pour finir on copie le tableau sur le disque
  • if ( NULL == ( pFile = fopen(dst, "w+") ) )
  • {
  • MessageBox(0, "Impossible de créer le fichier de destination", 0, 0) ;
  • return 1 ;
  • }
  • fwrite(FinalFile, sizeof(char), posDst, pFile) ;
  • // On ferme le fichier
  • if ( pFile != NULL ) fclose(pFile) ;
  • return 0 ;
  • }
BOOL Convertir(char* src, char* dst)
{
	// On vérifie que l'utilisateur a bien rentré deux noms pour les fichiers
	if ( !strcmp(src, "") )
	{
		MessageBox(0, "Il faut rentrer le nom du fichier source", 0, 0) ;
		return 1 ;
	}

	if ( ! strcmp(dst, "") )
	{
		MessageBox(0, "Il faut rentrer le nom du fichier de destination", 0, 0) ;
		return 1 ;
	}

	// On ouvre le fichier source
	FILE*	pFile ;
	char*	ctmp ;

	if ( NULL == ( pFile = fopen(src, "r") ) )
	{
		MessageBox(0, "Le fichier source n\'existe pas", 0, 0) ;
		return 1 ;
	}

	// On récupère la taille du fichier
	size_t taille ;
	fseek(pFile, 0, SEEK_END) ;
	taille = ftell(pFile) ;
	rewind(pFile) ;

	ctmp = new char[taille] ;

	// Lecture du fichier pour le stocker dans un tableau
	fread(ctmp, sizeof(char), taille, pFile ) ;

	// En fin de traitement, on ferme le fichier
	fclose(pFile) ;

	char* FinalFile = new char[2 * taille] ; // C'est trop mais ca évite de calculer la taille exacte

	// On recopie le tableau en insérant \r avant chaque \n
	unsigned posSrc, posDst ;
	for ( posSrc = 0, posDst = 0 ; posSrc < taille ;  )
	{
		if ( ctmp[posSrc] == '\n' )
		{
			FinalFile[posDst++] = '\r' ;
			FinalFile[posDst++] = '\n' ;
			posSrc++ ;
		}
		else
			FinalFile[posDst++] = ctmp[posSrc++] ;
	}

	// Pour finir on copie le tableau sur le disque

	if ( NULL == ( pFile = fopen(dst, "w+") ) )
	{
		MessageBox(0, "Impossible de créer le fichier de destination", 0, 0) ;
		return 1 ;
	}

	fwrite(FinalFile, sizeof(char), posDst, pFile) ;

	// On ferme le fichier
	if ( pFile != NULL ) fclose(pFile) ;


	return 0 ;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CALCULE DES EXPRESSIONS BOOLÉENNES ENTRÉES SOUS FORME DE CHA...

 Sources de la même categorie

Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik
SMART POINTEUR À COMPTEUR DE RÉFÉRENCE par nirgal76
POINTEUR INTELLIGENT par snpier wolf

Commentaires et avis

Commentaire de LordBob le 08/02/2004 22:56:24

ta source en fait elle sert pas a grand chose ?

Commentaire de djl le 09/02/2004 06:13:10

oui c'est ce que je me demandais, j'aurais plutot vu ca dans l'autres sens

Commentaire de Anacr0x le 09/02/2004 18:02:33

Dans l'autre sens ? pourquoi ? cette fois ca ne servirait strictement a rien...

Les fichiers txt de windows (avec "\r\n") sont lisible sans pb sous unix, mais l'inverse n'est pas vrai, ca serait donc inutile de transformer au format unix

Commentaire de djl le 09/02/2004 18:42:18

alors on doit pas avoir le mem probleme car moi de unix a win aucun pb par contre de win a unix l'editeur me rajoute des balise en fin de ligne correspondant au \r de win

Commentaire de vecchio56 le 09/02/2004 19:51:30 administrateur CS

quand lit sous windows un fichier unix, ca ne revient jamais à la ligne, donc c'est bien dans ce sens que c'est le plus utile
(j'ai déja fait une source semblable:
http://www.cppfrance.com/code.aspx?ID=19640)

Commentaire de Chouchou182 le 09/02/2004 21:29:47

Désolé Vecchio, j'avais pas vu ta source qui a l'air un peu  plus élaborée que la mienne.

A++

Commentaire de lastpixl le 10/02/2004 10:21:11

Il faudrait que tu ajoutes les includes présentes dans le zip dans le listing ici...
+++,
Lastpix'l

Commentaire de Chouchou182 le 10/02/2004 13:59:30

Salut lastpix'l.

Les includes :

pour les accès aux fichires disques : &lt;cstdio&gt;
pour les messagebox (c'est facultatif pour le but du programme mais c'est juste pour offrir une interface graphique) : &lt;window$.h&gt;
pour les comparaisons de chaînes de caractères, &lt;cstring&gt;

Voila, c'est tout.

Commentaire de magic_Nono le 17/02/2004 00:35:00

Salud!

ma classe de gestion de chaine a une fonction,winFormat, réversible pour le pb des '\r\n' &lt;=&gt; '\n'

Cette fonction , sert pour les affichages dans les fenetres windows: j'écrit mes textes avec '\n', c'est moins lourd et ça passe avec les messageBoxs
mais ça ne passe pas pour les zones de textes des boîtes de dialigue

=&gt; un coup de winFormat avant d'envoyer la chaîne...


pour y accéder, cliquez sur mon pseudo puis sur les sources, puis sur BString...

Magicalement,
magic_nono.

Commentaire de Clonk le 24/06/2004 14:18:52

Ca marche bien ton source, mais je sais pas pour les autres, mais moi il m'écrit des caractères inutiles à la fin du nouveau fichier (ça dois sûrement être dû à la taille torp grande du fichier lorsque tu le crée...)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales