#1 Le 28/04/2007, à 17:28
- amwus
[C] modifier une chaine dynamiquement
Bonjour à tous !
Voila, j'aimerais modifier un nom de fichier dynamiquement en C. Je m'explique. En fait, dans une boucle à chaque itération, je voudrais recréer un fichier de nom identique au précédent, mais avec un nombre en plus (file01, file02, file03, ...).
Mon nom de fichier est actuellement dans un pointeur char* fileWrite.
Et je fais fopen(fileWrite, "w") pour écrire dedans...
Mais comment rajouter dynamiquement l'indice de ma boucle au nom contenu dans fileWrite ?
Merci d'avance !
Black holes are where god divided by zero...
Hors ligne
#2 Le 28/04/2007, à 17:59
- best_friend_fr
Re : [C] modifier une chaine dynamiquement
Salut
Assure toi que ton malloc est assez grand pour fileWrite, et fais dans ta boucle
sprintf(fileWrite,"file%d",i);
Dernière modification par best_friend_fr (Le 28/04/2007, à 18:00)
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#3 Le 28/04/2007, à 18:26
- amwus
Re : [C] modifier une chaine dynamiquement
hmm et si je veux donner comme nom de fichier le nom contenu dans fileWrite ? En fait le nom de fichier est passé en paramètre du programme. Donc je le récupère dans fileWrite. Si par ex, je veux un fichier "bonjour", il devra sauver bonjou1, bonjour2 etc...
Black holes are where god divided by zero...
Hors ligne
#4 Le 28/04/2007, à 19:01
- Watchwolf
Re : [C] modifier une chaine dynamiquement
sprintf(fileWrite,"%s%d",nom,i);
Hors ligne
#5 Le 28/04/2007, à 19:06
- amwus
Re : [C] modifier une chaine dynamiquement
oui j'y avais pensé, j'ai essayé, mais là il met des combres incoyables. Il commence à 1 puis il monte à 12 etc etc etc jusqu'à un nombre très grand...
Bizarre comme probleme... Un probleme dans mon pointeur ?
Black holes are where god divided by zero...
Hors ligne
#6 Le 29/04/2007, à 01:04
- Marabout
Re : [C] modifier une chaine dynamiquement
Salut,
J'ai fait un programme qui à chaque itération créer un nouveau fichier avec un nom identique au précédent, mais avec un nombre en plus (file0, file1, file2, ...).
Je te met le code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void usage()
{
printf ( "usage:\ttest <file name>\n" );
exit ( 0 );
}
int main ( int argc, char ** argv )
{
if ( argc != 2 ) usage();
int i, j;
int value;
int nDigits = 1;
int digitValue;
char * res;
char * fileName;
FILE * file;
for ( i = 0; i < 20; i++ )
{
value = i;
while ( value/( int ) pow ( ( double ) 10, ( double ) nDigits ) != 0 )
{
nDigits++;
}
res = ( char * ) malloc ( nDigits+1 );
for ( j = nDigits-1; j > 0; j-- )
{
digitValue = ( value-value%( int ) pow ( ( double ) 10, ( double ) j ) )/pow ( ( double ) 10, ( double ) j );
value = value%( int ) pow ( ( double ) 10, ( double ) j );
res [ nDigits-1-j ] = ( char ) 48+digitValue;
}
res [ nDigits-1 ] = ( char ) 48+value;
res [ nDigits ] = 0;
fileName = ( char * ) malloc ( strlen ( argv [ 1 ] )+strlen ( res )+1 );
strcpy ( fileName, argv [ 1 ] );
fileName = strcat ( fileName, res );
file = fopen ( fileName, "w" );
fclose ( file );
free ( fileName );
free ( res );
}
}
Voilà j'espère que ça va t'aider.
Dernière modification par Marabout (Le 29/04/2007, à 01:52)
Hors ligne