un dossier avec plusieurs fichiers à traiter : console cassée - C++ - Programmation
Marsh Posté le 23-07-2007 à 13:49:28
oui
... mettre les mains dans le cambouis et regarder ce que ton système te propose pour énumérer les fichiers contenus dans un dossier, par exemple
Marsh Posté le 23-07-2007 à 13:52:05
Bon, je code sous linux en c++.
Le problème c'est que je ne suis pas super fort et que je ne sais pas du tout comment faire
Marsh Posté le 23-07-2007 à 14:21:49
J'ai trouvé ça, mais bon, je n'arrive pas à l'utiliser correctement.
Code :
|
Je mets dans mon main()
Code :
|
Ca compil bien, mais quand je lance le programme : Erreur de segmentation (core dumped).
Je suis sûr que je ne fais pas correctement le truc.
edit :
Code :
|
Ca marche
Marsh Posté le 23-07-2007 à 14:37:42
Code :
|
devrait mieux fonctionner (au feeling, je ne crois pas avoir jamais utilisé ces fonctions)
attention à bien lire la doc pour la libération des ressources !
Marsh Posté le 23-07-2007 à 14:39:03
KangOl a écrit : boost::filesystem |
c'est vrai que c'est pratique, boost.
Faudra que je me décide à y jeter un oeil, le jour où le temps de compilation ne me rebutera plus trop
Marsh Posté le 23-07-2007 à 14:50:56
KangOl a écrit : boost::filesystem |
theshockwave a écrit : |
Ca sert à quoi ce machin?
Marsh Posté le 23-07-2007 à 14:52:49
c'est une lib cross-platform qui donne plein de solutions uniformes pour régler des problèmes pour lesquels on doit, sinon, aller tatonner dans les apis systèmes ... l'avantage, c'est que c'est propre
Marsh Posté le 23-07-2007 à 15:33:02
Une autre question
Comment je peux faire pour que le programme trouve un fichier, fasse pleins d'opérations, puis passe au suivant.
Je cherche depuis tout à l'heure, et je n'avance pas
Marsh Posté le 23-07-2007 à 15:43:35
J'ai fait ça pour le moment (pour tester), et ça écrit des chiffres bizarres ( 10^-53) dans mon fichier.
Code :
|
Merci
Marsh Posté le 23-07-2007 à 16:08:37
problème de fichier binaire en entrée avec une lecture de données textuelles ?
Marsh Posté le 23-07-2007 à 16:26:09
En fait, les fichiers que je lis sont en deux colonnes, ce sont que des chiffres.
La première colonne je m'en fous, je ne veux que la seconde.
La, mon exemple est un peu "bête", c'est juste de lire la seconde colonne et de la copier dans un autre fichier.
J'aimerai bien, dans cet exemple, que tous les fichiers contenus dans le dossier soient lu et que la seconde colone de chaque fichier soit copiée.
Marsh Posté le 24-07-2007 à 00:24:18
Salut,
On peut voir un échantillon type d'un fichier stp?
Marsh Posté le 24-07-2007 à 00:27:37
Salut.
Quand je lis un dossier, il apparait des choses bizarres. Comme le . et le .. (voir en dessous), entre le 4 et le 5ième fichier et après le 5ième.
|
Et quand je veux faire de l'écriture dans un autre fichier, ça me plante le prog...
terminate called after throwing an instance of 'std::ios_base::failure' |
IrmatDen a écrit : Salut, On peut voir un échantillon type d'un fichier stp? |
Un fichier? Lequel? Par exemple, c'est un fichier type à analyser, ils se ressemblent tous.
359.06764 436677 359.08969 451505 359.11174 462920 359.13378 407927 359.15583 336382 |
Marsh Posté le 24-07-2007 à 00:57:14
toutsec a écrit : Quand je lis un dossier, il apparait des choses bizarres. Comme le . et le .. (voir en dessous), entre le 4 et le 5ième fichier et après le 5ième.
|
Normal; ton test ne planterait pas à ce moment là par le plus grand des hasards? Pourquoi tu ne te simplifies pas la vie avec boost::filesystem comme te l'a recommandé KangOl?
Marsh Posté le 24-07-2007 à 00:58:51
Ouè ça plante avec le "."
Bon, je ne suis pas du tout un pro du c++, mais je vais me renseigner avec ce boost...
Marsh Posté le 24-07-2007 à 01:01:42
Le truc, ce'st que je n'ai pas trop trop de temps en fait
edit : il faut m'aider là, sinon, j'vais pas m'en sortir
Marsh Posté le 24-07-2007 à 01:34:45
Personne ne peut m'aider à résoudre mon problème?
Je n'ai pas le temps de faire un apprentissage de boost. Encore faudrait il que j'arrive à l'utiliser sous ubuntu
Marsh Posté le 24-07-2007 à 02:02:59
Ben, si le nom de l'élément est '.' ou '..', bein, tu l'ignores... Je vois pas trop le souci en fait.
Marsh Posté le 24-07-2007 à 02:23:04
Voila un code qui marche.
Code :
|
Maintenant, le problème, c'est qu'il ne se passe rien au niveau de la lecteure d'un fichier, je ne comprends pas pourquoi
edit : si je mets des cout dans le while(spectre.good()), il ne se passe rien.
Marsh Posté le 24-07-2007 à 02:56:23
Ou alors, peut-on stocker tous les noms des fichiers dans un tableau de string? Après, il suffit de lire ce tableau et de faire les opérations voulues et c'est bon .
Cela résoudrait mes problèmes en fait
Il faut m'aider
Marsh Posté le 24-07-2007 à 11:03:46
Voila, en fait, le programme n'arrive pas à rentrer dans la boucle :
Code :
|
Qulqu'un peut me dire pourquoi?
Marsh Posté le 24-07-2007 à 12:19:01
Code :
|
J'ai progressé. J'arrive à stocker tous les noms dans un tableau de char*.
Mais maintenant, si je veux ouvrir un fichier pour de la lecture, ça bug compltément. Et ça fait foirer la console
Marsh Posté le 24-07-2007 à 12:42:02
Personne n'a d'idée?
Parce que ça m'arrangerait grandement
Code :
|
J'ai fait ça, mais comme d'hab, ça ne veut pas rentrer dans la boucle while(spectre.good()).
Je commence à craquer
Marsh Posté le 24-07-2007 à 12:44:21
ReplyMarsh Posté le 24-07-2007 à 13:04:52
ReplyMarsh Posté le 24-07-2007 à 13:10:41
ReplyMarsh Posté le 24-07-2007 à 13:14:34
KangOl a écrit : et un std::vector<std::string> pour ton tableau, merci ... |
Pour mon tableau de noms de fichiers?
Il faut passer des char* dans le spectre.open(tab[i],ios::in);
Donc avec des string, il faut faire une conversion, mais mon problème ne se trouve pas là. Je verrai ça plus tard.
Pour le moment, je dois savoir pourquoi ça ne rentre pas dans la boucle while...
Marsh Posté le 24-07-2007 à 13:18:19
toutsec a écrit : Bah oui c'est ça, mais la question, c'est pourquoi? |
Le fichier est mauvais ? tu l'ouvres en binaire ou texte au lieu du contraire ? ...
Marsh Posté le 24-07-2007 à 13:26:07
Je suis vraiment trop con
En fait, dans l'arborescence des fichiers, je compil et je lance le programme dans /home (c'est un exemple)
Pour lire les fichiers, je lui dis d'aller dans /home/pp et il me sort le nom des fichiers.
Quand je passe le nom des fichiers pour la lecteur, je ne mets QUE le nom. Donc ils ne les trouvent pas, vu qu'ils ne sont pas dans /home mais dans /home/pp.
Je dois donc modifier les noms des fichiers pour mettre /home/pp devant et là ça roule, normalement.
Maintenant c'est le temps de la question :
Comment je peux faire pour que le scan du dossier me renvoi "/pp/nomfichier.asc" au lieu de "nomfichier.asc" ?
Marsh Posté le 24-07-2007 à 13:29:37
bha il peut pas, a toi d'avoir une constante "directory" et de l'utiliser
Marsh Posté le 23-07-2007 à 13:37:44
Bonjoour
Je suis entrain de faire un petit programme pour l'exploitation de spectres.
Alors voila, il se trouve que j'ai ~400 spectres à exploiter répartie dans pas mal de dossiers.
En ce moment, je dois rentrer le nom de chaque fichier pour que les opérations se fassent.
Existerait il un moyen que dans la console je rentre carrement un dossier, et que ça traite automatiquement tous les fichiers qui se trouvent à l'intérieur?
Merci
Message édité par toutsec le 24-07-2007 à 12:26:18