/* * IFT1166 - TP #2 * * 01-février-2004 v1.03 ML vérifs nécessaires pour gcc * * * Auteur(s): ML & JLM * * * * contact: lokbani@iro.umontreal.ca * * Description: * Fichier ouvert en lecture juste pour vous donner une idée du contenu * pas besoin de comprendre toutes les instructions vu que certaines de * ces instructions ne seront etudiées que vers la fin de la session. * * Définition de fonctions: * * load_data: permet de charger dans un tableau les données lues d'un fichier de données * make_size: permet de lire et fixer la taille d'un tableau * * * * Remarques: * * Il ne vous est pas permis de modifier le contenu de ce fichier. * */ // ---------------> NE PAS MODIFIER <------------------ #include "data.h" // lecture de la première ligne du fichier afin de déterminer la taille void make_size(char* nomfic,unsigned int& param) { ifstream infic; // flux en lecture uniquement infic.open(nomfic); // ouverture du fichier et associant du flux à nomfic // test que l'ouverture est ok, sinon erreur fichier introuvable if (!infic.is_open()) { cerr << "Erreur à la ligne: " << __LINE__ << " ; Raison: impossible d'ouvrir le fichier <" << nomfic << ">" << endl; exit(1); } // lecture du premier element qui doit être un entier. infic >> param; // fermeture du fichier infic.close(); } // transfert des données d'un fichier vers un tableau void load_data (char* tabx[],unsigned int taille,char* nomfic) { ifstream infic; // flux en lecture uniquement string chaine; // une chaîne de caractères du type string infic.open(nomfic); // ouverture du flux et association infic/nomfic // test que l'ouverture est ok, sinon erreur fichier introuvable if (!infic.is_open()) { cerr << "Erreur à la ligne: " << __LINE__ << " ; Raison: impossible d'ouvrir le fichier <" << nomfic << ">" << endl; exit(1); } unsigned int index=0; infic >> chaine; // on se débarrasse de la première ligne (la taille sans intérêt ici, ayant déjà servi dans make_size) // on lit tant que la fin du fichier n'a pas été atteinte while(!infic.eof()) { if (index >= taille) break; // sait-on jamais qu'on s'est planté sur la taille réelle infic >> chaine; // on lit et on dirige la lecture vers la chaîne // transfert string vers char* : const_cast pour éviter le warning strcpy(tabx[index],const_cast (chaine.c_str())); // on flush le contenu de chaine pour une seconde lecture chaine=""; // on incrémente index representant le nombre de lignes lues index++; } // on ferme le fichier, lecture terminée. infic.close(); }