Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/04/2007, à 18: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, à 18: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, à 19: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, à 19: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, à 20:01

Watchwolf

Re : [C] modifier une chaine dynamiquement

sprintf(fileWrite,"%s%d",nom,i);

Hors ligne

#5 Le 28/04/2007, à 20: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, à 02: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, à 02:52)

Hors ligne