Ouvrir plusieurs fichiers

kamans -  
 Utilisateur anonyme -
Bonjour,
voila, je fait un petit programme en langage c, mon probleme c'est que j'arrive pas à ouvir et ecrire dans plusieurs fichiers en meme temps.
mon code

char dest[100][20], file[100][20];

src=fopen(argv[1],"r");
for(i=0;i<p;i++)
{
strcpy(dest[i],"dest");
sprintf(s,"%i",i);
strcat(dest[i],s);
strcpy(file[i],"file");
strcat(file[i],s);
FILE *dest[i];
dest[i]=fopen(file[i],"w");
}
.
.
.
if (strcmp(mot ,"@<TRIPOS>MOLECULE")==0)
{
nb[i]+=1;
}
fprintf(dest[i],"%s",buff); // warning: passing argument 1 of ‘fprintf’ from incompatible pointer type

.
.
.
fclose(src);
for (i=0; i<parties;i++)
{
fclose(dest[i]); // warning: passing argument 1 of ‘fprintf’ from incompatible pointer type
}

SVP pouvez vous me corriger ce code. MERCI
A voir également:

2 réponses

Utilisateur anonyme
 
J'ai vite regardé, je ne sais pas si ce n'est que ça, mais tu as déclaré deux fois ta variable dest :
char dest[100][20] et FILE *dest[i]
(D'où l'intérêt de toujours tout déclarer en début de code).
0
kamans
 
si je le declare sous en FILE *dest aprés je peu pas y introduire les chaines de caracteres des pointeurs vers les noms des fichiers et si je le declare seulement sous forme tableau ça marche pas au niveau de l'ouverture du fichier: dest[i]=fopen(file[i],"w");
0
Utilisateur anonyme > kamans
 
Ce que je disais, c'est qu'au début du code tu déclares dest comme étant un tableau de char, et après tu le redéclares en un pointeur sur FILE : tu ne peux pas redéclarer ta variables dest en FILE* si tu l'as déjà déclarée en char[][] au début.
Utilise 2 noms différents pour tes variables, par exemple dest_c pour ton tableau de char, et dest_f pour FILE* (ou n'importe quoi d'autre).
0
kamans > Utilisateur anonyme
 
oui, merci bien ça j'ai bien compri, mais comment faire pour déclarer les pointeurs vers les fichiers? parceque chaque fichier lui faut un pointeur pour l'ouvrir, et le nombre de fichiers n'est fixe!
j'espere que je suis plus clair cette fois
0
Utilisateur anonyme
 
Ah oui, c'est plus clair, je n'avais pas compris.
Cela se fait comme s'il s'agissait d'un FILE* normal, càd :

FILE *fp = (FILE*) malloc(n*sizeof(FILE*)); //n : nombre de pointeurs

...

for(i = 0 ; i < n ; i++) {
   fp[i] = fopen(dest[i], "w");
   ...
}

...
0