2017-03-08 6 views
0

J'essaie de lire le contenu de "Danfilez.txt" en utilisant fgets. Cependant, à la fin, le programme renvoie une valeur aléatoire et je ne sais pas pourquoi. Je suis nouveau à la programmation donc toute aide serait grandement appréciée!Comment lire un fichier à l'aide de fgets?

int main() 
{ 
    FILE* Danfile = fopen ("Danfilez.txt", "w"); 
    char fileinfo [50];// Character arrays for file data // 

    if (Danfile == NULL) 
    { 
     printf ("ERROR\n"); 

    } 

    else 
    { 
     printf("Everything works!\n"); 
     fprintf (Danfile, "Welcome to Dan's file."); 
     fgets(fileinfo,50,Danfile); 
     printf("%s\n",fileinfo); 
     fclose (Danfile); // CLOSES FILE // 
    } 


    return 0; 
} 

Répondre

2

Puisque vous lisez et écrivez à partir du fichier, vous voulez utiliser "w +" pour ouvrir le fichier plutôt que simplement "w".

Mais cela ne va pas réparer les choses car une fois que vous avez écrit ce texte, votre position dans le fichier est toujours à la fin, donc vous devrez également réinitialiser la position avant de pouvoir lire fseek()

fseek(Danfile,0,SEEK_SET); 
+0

Ahh ha! Merci, je n'ai pas rencontré fseek avant que ce soit intéressant. Donc je suppose que ça fait juste que vous êtes au début du fichier avant de lire? Cheers –

+0

Dans cet exemple, oui, il "définit" la position à 0 dans le fichier. Vous pouvez également l'utiliser pour vous positionner par rapport à la position actuelle ou à la fin du fichier. –

0

Lors de l'utilisation fopen() vous passez l'option d'ouverture comme argument à la funtion. Voici la liste:

"r" - Opens the file for reading. The file must exist. 
"w" - Creates an empty file for writing. If a file with the same name already exists, 
     its content is erased and the file is considered as a new empty file. 
"a" - Appends to a file. Writing operations, append data at the end of the 
     file. The file is created if it does not exist. 
"r+" - Opens a file to update both reading and writing. The file must exist. 
"w+" - Creates an empty file for both reading and writing. 
"a+" - Opens a file for reading and appending. 

Essayez d'utiliser "r +" ou "w +". Après avoir écrit du texte, votre position dans le fichier avancera avec le texte. Utilisez rembobiner (FILE * filename) pour déplacer votre position directement au début du fichier. Pour plus d'informations liées à la manipulation de fichiers, je vous recommande de vérifier ce qui est à l'intérieur stdio bibliothèque: https://www.tutorialspoint.com/c_standard_library/stdio_h.htm