J'essaie de lire les données du fichier texte en utilisant une fonction différente comme fgetc()
, fgets()
et fscanf()
. Pendant l'exécution, le programme se termine après avoir lu fgetc()
.c le programme se termine pendant la lecture du fichier
#include <stdio.h>
void writeFile(FILE *, char *);
void readFile(FILE *,char *);
void main(void){
FILE *file;
char *path="temp/test.txt";
printf("%s\n",path);
writeFile(file,path);
readFile(file,path);
return;
}
void readFile(FILE *file, char *path){
file = fopen(path , "r");
if(file)
printf("\n file opened");
char *buff;
char getc = fgetc(file);
printf("\n 1 char :: %c ",getc);
getc = fgetc(file);
printf("\n 2 char :: %c ",getc);
fgetc(file);
fgets(buff,25,file);
printf("\n 3 gets :: %s ",buff);
fgets(buff,255,file);
printf("\n 4 gets :: %s ",buff);
int fscan = fscanf(file,"%s", buff);
printf("\n 5 fscan :: %s ",buff);
int eof= fclose(file);
}
void writeFile(FILE *file, char *path){
file = fopen(path , "w+");
if(file)
printf("\n file opened");
char *fileStr= "this is not working";
int putc = fputc('@',file);
fputc('!',file);
int puts = fputs("\nThis is test file.",file);
int putf1 = fprintf(file, "\n Kinldy help to solve this");
int putf2 = fprintf(file, "\n%s", fileStr);
int eof= fclose(file);
}
Note: Si je commente writeFile(file,path);
ligne dans le programme, il exécute correctement.
buff 'char *;' -> 'buff char [255];' – BLUEPIXY
Si vous déclarez 'buff' avec' 255' caractères, vous devez également définir 'fscanf (fichier "% 254 s", buff), 'pour vous assurer de ne pas déborder (si vous avez une séquence ininterrompue de caractères sans espace qui dépasserait la taille de' buff' - peu probable, mais pour éviter un comportement indéfini, vous devriez) –