2010-11-20 5 views
0

J'utilise Dev-C++ IDE, et maintenant je suis en train de faire le fichier handling.here est mon code:Dev-C++ Filehandling

int main(){ 
    FILE *fp; 
    int b = 10; 
    int f; 
     fp = fopen("data.txt", "w"); 
     //checking if the file exist 
     if(fp == NULL){ 
     printf("File does not exist,please check!\n"); 
     }else{ 
     printf("we are connected to the file!\n"); 
     } 
     fprintf (fp, " %d ", b) ; 
     fclose(fp); 
     printf("Reading from the file \n"); 

     FILE *fr; 
     fr=fopen("data.txt","r"); 
     fscanf (fr, " %d ", &f) ; 
     fclose(fr); 
     printf("the data from the file %d \n", f); 
    return 0; 

} 

ce code fonctionne dans NetBeans, mais dans Dev-C++ , Je reçois juste le message de "nous sommes connectés au fichier", mais il ne met pas la valeur de "10" dans le fichier. s'il vous plaît vous connaissez la réponse laissez-moi savoir, que dois-je faire?

+3

@ utilisateur261002; voyez-vous un fichier créé sans contenu? Ou pas de fichier du tout? – BeemerGuy

+2

La première chose à faire est de changer l'IDE. DevC++ est mort et il y a beaucoup de meilleurs remplacements (Visual Studio Express, Code :: Blocks etc) – JustSid

+0

bien qu'il crée le fichier, mais pas d'écriture dans le fichier. – user261002

Répondre

2

Je ne vois rien de mal avec votre code, mais voici quelques conseils

Une bonne habitude est de créer des fonctions et appeler ces au lieu d'avoir tout en ligne par exemple

#define FILENAME "data.txt" 

void writeFile() 
{ 
    FILE *fp; 
    int b = 10; 
     fp = fopen(FILENAME, "w"); 
     //checking if the file exist 
     if (fp == NULL) 
     { 
     perror("File could not be opened for writing\n"); 
     } 
     else 
     { 
     printf("File created\n"); 
     } 
     fprintf (fp, " %d ", b) ; 
     fclose(fp); 
} 

void readFile() 
{ 
    int f; 
    printf("Reading from the file \n"); 

    FILE *fr; 
    fr=fopen(FILENAME,"r"); 
    fscanf (fr, " %d ", &f) ; 
    fclose(fr); 
    printf("the data from the file %d \n", f); 
} 

int main() 
{ 
    writeFile(); 
    readFile(); 
} 

puis lors de la lecture du fichier, je vous suggère d'utiliser fgets au lieu car il est plus sûr d'utiliser depuis fscanf a tendance à provoquer la mémoire si les valeurs écrase sont inattendues.

<- fscanf(fp," %d ", &f); 

-> char buf[16]; // some buffer 
-> fgets(fp, buf, 10); // read as string 
-> f = atoi(buf); // convert to int 
0

cela fonctionne parfaitement. Aucun problème avec le code d'IDE. Veuillez déplacer le code dans "Mes documents" dans Windows. Essayez-le .... Je pense que son problème de permission.