Ouvrir plusieurs fichiers
kamans
-
Utilisateur anonyme -
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
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
-
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).-
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");
- 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).
-
-
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"); ... } ...