Comment créer plusieurs fichiers à la suite?

Résolu/Fermé
empirekro Messages postés 31 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 28 octobre 2013 - Modifié par Chris 94 le 3/10/2013 à 16:36
empirekro Messages postés 31 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 28 octobre 2013 - 3 oct. 2013 à 18:01
Bonjour,
J'ai réussi (non sans mal :)) à saisir n valeurs dans un tableau nombres[i].
Je voudrais faire une boucle "for" pour créer n fichiers et y placer mes n nombres.
Ca donnerait un truc du style


#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[]))
{
int* nombres[] = argv[1];
char nombre[5];

for (i=0;i<=n-1;i++) /*pour chaque nombre du tableau nombre[], on crée le fichier, on écrit le nombre, on ferme le fichier*/
{
FILE* fichierNombre;
if (fichierNombre == NULL)
{
i--; /*on recommence la boucle pour ce nombre*/
}

fichierNombre = fopen(/*et là...*/,"w+"); /*un truc comme "fichierNombre" + valeur_de_i,".txt"*/

snprintf(nombre,5,"%d",nombre[i]);
fputs(nombre, fichierNombre); /*et bien sûr...*/
fclose(fichierNombre);
}
return(0);
}

J'ai tenté de bidouiller mon nom de fichier avec un truc du style
/*à rajouter avant la boucle*/
char *nom, mon[2];

/*à rajouter dans la boucle avant le fopen*/
nom = "fichierNombre";
snprintf(mon,2,"%d",i);
strcat(nom,mon);
strcat(nom,".txt");

/*remplacer le fopen par*/
fichierNombre = fopen(nom,"w+");

Evidemment, ça ne fonctionne pas et gdb me renvoie un signal "SIGSEV" dans un fichier dont j'ai découvert l'existence en même temps que j'ai vu l'erreur (../sysdeps/i386/i686/multiarch/strcat-ssse3.S) du style /*nomDuFichierAInsulter*/ : Aucun fichier ou dossier de ce type.

Quelqu'un aurait-il une piste à me soumettre?
Merci à ceux qui voudront bien se pencher sur la question.
A voir également:

2 réponses

Utilisateur anonyme
3 oct. 2013 à 17:18
Bonjour

Ton idée est bonne, mais quand tu fais nom = "fichierNombre"; tu fais pointer nom sur une zone allouée par le compilateur et qui contient "fichierNombre". Mais tu ne sais pas ce qu'il y a après cette zone, donc pas question d'écraser ce qu'il y a après avec tes strcat !
Il faut que tu te réserves une zone à toi dans laquelle tu vas fabriquer le nom de fichier, que tu peux très bien créer en un seul sprintf au lieu de plusieurs stract :

char nom[50];
...
sprintf(nom,"%s%d%s","FichierNombre",i,".txt");
...
1
empirekro Messages postés 31 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 28 octobre 2013
3 oct. 2013 à 18:01
Merci, ça marche du tonnerre!!!
J'avais déjà tenté le coup du char nombre[50];

Mais pas le sprintf...
0