probleme lecture ecriture dans des fichiers
bonjour
mon petit programme ne marche pas ca bloque dans les deux procedure de lecture et d'ecriture ainsi que si je remplace fgets par scanf dans la procedure openFile ca marchepas puisque le programme lit les donnees du buffer
merci pour vos reponse
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#include <stdio.h>
#include <errno.h>
#include <string.h>
void openFile(FILE *file,char *mod) //pour ouvrir un fichier avec le mode indique
{
char path[101];
errno=0;
printf("the Path: ");
fgets(path,101,stdin);
file=fopen(path,mod);
if(file==NULL)
{
fprintf(stderr,"Error while opening the file\n");
strerror(errno);
}
}
void writeFile(FILE *file) //pour l'ecriture dans un fichier
{
char c1=' ',c2;
if(file==NULL)
{
fprintf(stderr,"Error while opening the file %s\n",strerror(errno));
return;
}
printf("press twice enter to quit\n");
do
{
c2=c1;
c1=getchar();
fputc(c1,file);
}while(c1!='\n' && c2!='\n' );
}
void readFile(FILE *file) //pour la lecture d'un fichier
{
char c;
if(file==NULL)
{
fprintf(stderr,"Error while opening the file %s\n",strerror(errno));
return;
}
while(c!=EOF)
{
c=fgetc(file);
putchar(c);
}
}
void closeFile(FILE *file) //pour fermer le fichier
{
if(file==NULL)
{
fprintf(stderr,"Error while opening the file %s\n",strerror(errno));
}
else
{
fclose(file);
}
}
int main(void)
{
char choice;
FILE *file;
do
{
printf("1-write 2-add 3-read 4-quit: ");
choice=getchar();
switch(choice)
{
case '1':{
openFile(file,"w");
writeFile(file);
closeFile(file);
}
break;
case '2':{
openFile(file,"a");
writeFile(file);
closeFile(file);
}
break;
case '3':{
openFile(file,"r");
readFile(file);
closeFile(file);
}
break;
case '4':{
}
break;
default :fprintf(stderr,"invalid choice\n");
}
fflush(stdin);//pour vider le buffer
}while(1);
} |