Manipulation de fichiers en c/c++ [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
Bonjour tout le monde.

j'ai un repertoire contenant 30 fichier de 1.raw jusqu'a 29.raw
pour pouvoir utiliser ces fichiers avec la bibliothéque graphique vtk
il faut que je modifie l'extention de ces fichiers en .0
si quelqu'un peut m'aider.......................

MERCI BEAUCOUP

14 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Pour renomer un fichier tu peux utiliser la fonction MoveFile() de l'API Windows.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/movefile.asp

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005

merci
je vais essayer
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Lu,

Coder a la dur, voila ce que ca donne. Tu n'as plus qu'a modifier les valeur des 3 define selon tes besoins.
Tu n'as plus qu'a copier/coller le code :


#include
<windows.h>
#include <stdio.h>

#define FIRST_FILE 1
#define LAST_FILE 3
#define FILE_PATH "E:\\fic\"


int main()
{
int i;
char szBuff[512];
char Cmd[512];

printf("DEBUT DE RENOMMAGE\n\n");


for(i=FIRST_FILE; i<=LAST_FILE; i++)
{
strcpy(szBuff, FILE_PATH);
strcat(szBuff, itoa(i,Cmd,10) );
strcat(szBuff, ".raw");

strcpy(Cmd, "rename ");
strcat(Cmd, szBuff);
strcat(Cmd, " ");
strcat(Cmd, itoa(i,szBuff,10) );
strcat(Cmd, ".0");


printf("%s\n", Cmd);


system(Cmd);
}


printf("\nFIN DE RENOMMAGE\n\n");


return 0;
}

Shell
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
system() a banir.

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005

ok merci beaucoup
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005

ca marche pas quand je reviens au rep les noms de fichier ne sont pas modifiés
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
int main()

{

char File[512+1];

char FileNew[512+1];



for(int i=1; i<=4; i++)

{

sprintf(File, "Fichier%i.txt", i);

sprintf(FileNew, "Fichier%i.txt", i);

ChangeExtension(FileNew, "ram");

MoveFile(File, FileNew);

}

system("pause");

return 0;

}



void ChangeExtension(char *FileInit, char *Ext)

{

char *Buff = FileInit;
//On initialise un pointeur avec l'adresse du premier élement du tableau

while(*Buff++) //Tant que l'on n'est pas en fin de chaîne

;

Buff-=4; //On revient au niveau du point (-4 (3caractère+\0))

strcpy(Buff, Ext); //Et on copie la nouvelle extension

//à présent FileInit à changer d'extension

}



Je ne garantie rien pour la propreté et même la correcteté :) lol du
code ( surtout niveau des pointeurs ) mais ca change l'extension (
seulement pour les fichiers qui ont une extension de 3 lettres, pour
les autres modifier le Buff-=4;

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Bon le code au dessus est faux, j'lé coller comme ça, remplacer ram par
0 dans ChangerExtension ensuite met tes propres noms de fichier et
change les valeurs de la boucle, t'es conscient que j'allais pas
frabriquer 29 fichier ram quand même :)

void Aurevoir( void ); //Bonne journée
Messages postés
14981
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
1 mars 2021
94
char *_Extension;

_Extension = strstr(FileName, ".raw");

strcpy(_Extension, ".0");


Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Etes-vous au courant que même sous Windows on peut faire des "shell scripts" ?

Voila ce que ca donne en une ligne:



FOR /L %c IN (1,1,29) DO REN %c.raw %c.0

Kaid - kaid.fr.st
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Euh... Jamais vu lol en même temps pour ce que j'ai vu vous allez me dire lol :D

void Aurevoir( void ); //Bonne journée
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Arnotic, pourquoi system à bannir s'il te plait?
Comme dit Kaid, un batch est bien plus adapté a ce problème simple
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
J'pense que c'est parce que DeathCrash utilise des commandes dos :o enfin je sais pas lol

autant passer par le batch en faite :D
void Aurevoir( void ); //Bonne journée
Messages postés
6
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
28 juillet 2005

coucou
j'ai reussi en utilsant la fonction MoveFile()
Merci a tout le monde

Bonne Journée