Lire contenu de plusieurs fichiers en même temps
Résolu
je suis en train d' essayer d' ecrire un Programme qui demande à l' utilisateur de donner le nombre des fichiers à ouvrir (1 à 4), les noms des fichiers (6 caratères)ensuite le Programme les ouvre et lit le contenu de chaque fichier et affiche tous les contenus en même temps.
voici ma première fonction qui marche très bien.
et là la fonction à problème
merci d' avance pour tous vos aides
voici ma première fonction qui marche très bien.
void entrer_nom(const int& m, int& nb_1, char in_name[4][7])
{
m = 4;
cout << "Nb =";
cin >> nb_1;
if (nb_1 <= m)
{
for (int j = 1; j <= nb_1; j++)
{
cout << j << ".Cmd_Name =";
cin >> &in_name[j][7];
}
}
}
et là la fonction à problème
void lire_contenu(ifstream&, char file_Name[4][7], char name_1[7], int& n_1, double& sd_1)
{
ifstream inf;
//cout << "Enter the file name to be opened: ";
//cin >> file_Name;
inf.open(file_Name, ios::in);
if (inf.fail())
{
exit(1);
}
else
{
cout << "Cmd_Name:" << file_Name << endl;
inf >> name_1 >> set_id1;
inf.ignore(numeric_limits<streamsize>::max(), '\n');
inf >> n_1 >> sd_1;
}
inf.close();
cout << "NAME:" << name_1 << endl;
cout << "SET_ID:" << set_id1 << endl;
cout << "N =" << n_1 << endl;
cout << "SubD =" << sd_1 << endl;
return;
}
merci d' avance pour tous vos aides
A voir également:
- Lire contenu de plusieurs fichiers en même temps
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Renommer plusieurs fichiers en même temps - Guide
- Lire fichier epub - Guide
- Lire fichier bin - Guide
- Excel trier plusieurs colonnes en même temps - Guide
1 réponse
Ça me paraît un peu compliqué. Je ferais d'abord une boucle qui demande les noms de fichiers, puis ensuite qui les affiche. Je n'ai pas compris ce qu'était set_id.
Par ailleurs je ne sais pas trop ce que tu entends par afficher le contenu en même temps (car j'imagine que tu vas en pratique les afficher les uns après les autres) ?
Compilation :
Exécution :
Bonne chance
Par ailleurs je ne sais pas trop ce que tu entends par afficher le contenu en même temps (car j'imagine que tu vas en pratique les afficher les uns après les autres) ?
#include <fstream> #include <iostream> #include <list> #include <ostream> #include <string> std::string prompt_filename(std::size_t i, std::size_t n) { std::string filename; do { std::cout << "Filename (" << i << '/' << n << ") (6 chars max)? "; std::cin >> filename; } while (filename.size() > 6 || filename.size() == 0); return filename; } bool print_file(std::ostream & os, const std::string & filename) { bool ret = false; std::ifstream ifs(filename); if (ifs) { std::string line; while (std::getline(ifs, line)) { os << line << std::endl; } ifs.close(); ret = true; } return ret; } int main() { std::size_t num_files; std::list<std::string> filenames; do { std::cout << "Number of files [1-4]?"; std::cin >> num_files; } while(num_files == 0 || num_files > 4); for (std::size_t i = 0; i < num_files; ++i) { filenames.push_back(prompt_filename(i, num_files)); } for (const std::string & filename : filenames) { bool success = print_file(std::cout, filename); if (!success) { std::cerr << "Can't print [" << filename << ']' << std::endl; } } return 0; }
Compilation :
g++ -std=c++11 -W -Wall toto.cpp -o toto
Exécution :
./toto
Bonne chance
En fait j'ai ajouté ça après coup pour coller à ton énoncé mais comme tu l'as compris le programme marcherait sans ces tests pour des strings de longueurs à priori quelconques et je n'ai pas testé derrière.
Pour être homogène avec prompt_filename, on aurait également pu créer prompt_num_files.
Bonne continuation !