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
Configuration: Linux
Firefox 3.0.10

2 réponses

  1. 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
    1. 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
      1. 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
      2. 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
  2. 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