ProGrammeHeure | bonjour,
je suis sous winXP,IDE devc++,newbies, et je fait un programme en c.
objectif final: faire un un serveur (je suis au tout tout début).
but de ce code:
j'ai en local un fichier texte "test.txt" remplit du début à la fin par "ABCDEABCDEABC..."
j'ai 5clients qui veulent ecrire chacun dans leur fichier texte attribué (exemple client1 à le fichier "Client1.txt" )
la lettre qui leur correspond.
au final je veut que le fichier "Client1.txt" soit remplit de A
le fichier "Client2.txt" soit remplit de B
le fichier "Client3.txt" soit remplit de C
...
bon attention je balance le code et je pose mes question après :
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #define NombreDeClients 5
- #define TailleMaxNomFichier 20
- #define CheminFichierMax 94
- int main(int argc, char *argv[])
- {
- int status,caractereActuel=0,i;
- int* iP1[NombreDeClients];// là je veut faire un tableau de pointeur pour tout les pointeur de fichier
- int* iRemplisseurDeTrame[NombreDeClients];
- FILE* FichierVideo = NULL;
- FILE * FichierClient= NULL;//pointeur de fichier client
- //char CheminFichier[CheminFichierMax];
- char NomDuFichier[TailleMaxNomFichier];
- char cNomFichierClient [11]="Client";//fichier client
- int c;
- //creation fichier client
- for (i = 0 ; i < NombreDeClients ; i++)
- {
- sprintf(cNomFichierClient,"Client %i.txt", (i+1));// concatenation pour les noms de fichier
- //création du fichier Clienti.txt
- iP1[i] = fopen(cNomFichierClient, "w" );//prototype de fopen definit dans stdio.h
- /* test d'ouverture du fichier (est-elle realisée ?) */
- if (iP1[i] != NULL)
- {
- //printf("test 2a \n" );
- printf (" ouverture fichier Client%d [OK] \n",(i+1));
- }
- else
- {
- printf (" ouverture fichier Client%d [FAIL] \n",(i+1));
-
- }
- }//fin boucle for fin de creation des fichiers clients
- printf("\n" );
-
- printf("entrez le nom du fichier a ouvrir\n" );
- scanf ("%s", &NomDuFichier);//là j'entre : test.txt
- printf("vous avez saisi %s\n\n",NomDuFichier);
-
- FichierVideo = fopen(NomDuFichier, "r+" );
- if (FichierVideo != NULL)
- {
- // On peut lire et écrire dans le fichier
- printf(" ouverture fichier %s [OK]\n",NomDuFichier );
- // début lecture ecriture....
-
- //initialisation de verif de fin de fichier
- caractereActuel = fgetc(FichierVideo+NombreDeClients-1);
- while (caractereActuel != EOF);//tant qu'on est pas a fin du fichier
- {
- for (i = 0 ; i < NombreDeClients ; i++)
- {
-
- //fputc('A', FichierVideo);// test d'ecriture dans le fichier marche
- FichierClient=FichierVideo+i;
- //printf("\nvaleur de la case pointer par FichierClient %i\n",*FichierClient);
- c= (*FichierClient);
-
- fputc(c, iP1[i]);
-
- }
- caractereActuel = fgetc(FichierVideo+NombreDeClients-1); // On lit le caractère
- if (caractereActuel != EOF)
- FichierVideo+=5;// parce que j'ai 5 client
-
- }
- printf("\n" );
-
- //.... On ferme le fichier qui a été ouvert
- status = fclose(FichierVideo);
- if (status == EOF)
- printf(" fermeture fichier %s [FAILED]\n",NomDuFichier);
- else if (status == 0)
- printf(" fermeture fichier %s [OK]\n",NomDuFichier);
- else
- printf(" fermeture status lors de la tentative de fermeture du fichier %s [FAILED]\n",NomDuFichier);
- }
- else
- printf(" ouverture fichier %s [FAILED]\n", NomDuFichier); // On affiche un message d'erreur
-
- system("PAUSE" );
- return 0;
- }
|
bon ça c'est fait j'obtiens 1 warning à : iP1[i] = fopen(cNomFichierClient, "w" );
"[Warning] assignment from incompatible pointer type" mais si il n'y a que le warning ça compile et ça fonctionne. C'est mon tableau de pointeur qui ne doit pas ce faire comme ça je pense.
une erreur, dans la boucle for à la ligne: c= (*FichierClient);
" incompatible types in assignment "
là je souhaite mettre dans la variable c, la valeur de la case mémoire pointée par le pointeur FichierClient.
et enfin un warning à la ligne:fputc(c, iP1[i]);
"[Warning] passing arg 2 of `fputc' from incompatible pointer type "
là encore je pense que ça vient de mon tableau de pointeur.
mais bon le résultat est que je n'arrive pas a compiler, et ne trouve pas comment résoudre ces erreur.
je ne comprend pas pourquoi ça passe pas. donc si quelqu'un pourrait , m'aider à comprendre, m'expliquer ou/et m'aider à débuguer, je lui en serais reconnaissant.
---------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
|