/* Laboratoire 13 (Fichiers) Question 2: Écrire un programme qui demande à l'utilisateur de saisir un nom de fichier (nom_fich), puis qui demande à l'usager de saisir des chaines de caractères (à répétition). Pour chaque chaine de caractères saisie, votre programme doit la sauvegarder dans le fichier nom_fich. Le programme continue jusqu'à ce que l'usager saisisse une ligne vide. Il faudra alors afficher le contenu complet du fichier à l'écran. Note: Vous ne devez pas sauvegarder dans une variable TOUTES les chaines saisies par l'usager au fur-et-à-mesure qu'il saisit. */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #define TAILLE_MAX_CHAINE 300 //Taille maximale du buffer stockant une chaine de caractères. int main(void) { char nom_fichier[TAILLE_MAX_CHAINE]; char chaine[TAILLE_MAX_CHAINE]; //chaine définie de façon statique pour stocker la saisie. char chaine_lue[TAILLE_MAX_CHAINE]; FILE* fichier; //Handle vers le fichier où on stocke la saisie. //Saisie du nom de fichier printf("Veuillez saisir le nom du fichier: "); fgets(nom_fichier, TAILLE_MAX_CHAINE, stdin); //On ne veut pas de \n dans le nom de fichier, on l'enlève: nom_fichier[strlen(nom_fichier)-1] = '\0'; //On commence par ouvrir le fichier fichier = fopen(nom_fichier, "w"); //Ouverture en mode création if (fichier == NULL) { printf("Erreur lors de l'ouverture du fichier."); return EXIT_FAILURE; } //Saisie du texte. printf("*** Saisissez votre texte: ***\n"); do { fgets(chaine, TAILLE_MAX_CHAINE, stdin); if (chaine[0] != '\n') { fprintf(fichier, "%s", chaine); } } while (chaine[0] != '\n'); //On répète tant que l'usager n'a pas saisit une ligne vide. fclose(fichier); fclose(fichier); //On ferme le fichier en écritue. //Lecture depuis le fichier et affichage: fichier = fopen(nom_fichier, "r"); //Mode lecture while (fgets(chaine_lue, TAILLE_MAX_CHAINE, fichier) != NULL) { printf("%s", chaine_lue); } fclose(fichier); system("pause"); return EXIT_SUCCESS; }