Urgent : besoin d'aide sur un code simple de c++

Urgent : besoin d'aide sur un code simple de c++ - Programmation

Marsh Posté le 18-09-2001 à 18:59:24    

Voila j'ai un pb dans mon code de c++, mon but est de lire les caracteres d un fichier texte et de les stocker dans une liste.
 
inlude<iostream.h>
include<fstream.h>
 
void main() {
 
fstream fic;
char *valeur;
fic.open("c://tp.txt", ios::in);
fic.read((char*) & valeur, sizeof(char));
cout << veleur[0];
 
}
 
Apparement d apres visual C++ le fichier est bien lu mais c au nv du cout que ca coince. J'arrive pas a recuperer la valeur sur lakelle ponte valeur que ce soit via valeur[0], valeur ou *valeur.
 
Alors comment faire pour lire les caracteres du fichier et les stocker dans une liste?
 
Merci d avance a tous ceux qui m aideront.

Reply

Marsh Posté le 18-09-2001 à 18:59:24   

Reply

Marsh Posté le 18-09-2001 à 19:31:07    

fic.read((char*) & valeur, sizeof(char));
 
Il ne faut pas le "&" et en plus tu n'alloues pas de mémoire pour "valeur".

Reply

Marsh Posté le 18-09-2001 à 19:32:31    

Et c'est "cout << valeur;" simplement.

Reply

Marsh Posté le 18-09-2001 à 19:35:56    

Merci mais comment j'alloue de la memoire si je ne sais pas encore cobien de memoire le fichier que je vais scanner va prendre?
 
Je pensais que le simple fait de creer le pointeur sur char valeur allouait de la memoire.

Reply

Marsh Posté le 18-09-2001 à 19:42:19    

Si tu utilises Visual C++ tu peux utiliser la classe CString à la place d'un char *. Cette classe alloue elle-même la mémoire nécessare dynamiquement.

Reply

Marsh Posté le 18-09-2001 à 19:43:58    

c'est bizarre, mais je n'arrive pas a trouver fstream.read dans les MSDN, tu es sur que c'est permis et que la syntaxe est bonne? d'habitude, j'utilise plutot des FILE quand je travaille avec des fichiers.

Reply

Marsh Posté le 18-09-2001 à 19:59:43    

#include<cstring.h> ne marche pas, pourtant la classe est bien dans le repertoire include.
 
Pour le fstream fic;
        fic.read....
 
Je suis sur que c est une bonne syntaxe. Par contre j'arrive tjrs pas a lire le contenu d un fichier et a le srtocker dans une liste  :(

Reply

Marsh Posté le 18-09-2001 à 20:10:45    

Tu dois utiliser filebuf et istream.

Reply

Marsh Posté le 18-09-2001 à 20:14:39    

Je voudrais pas abuser de ton aide mais tu pourrais pas preciser stp?
 
(c koi filebuf ?)

Reply

Marsh Posté le 18-09-2001 à 20:15:53    

ca y est j'ai bien trouvé la fonction read, mais elle ne peux pas s'utiliser correctement comme tu le fais. Dans ton exemple, elle n'est censées ne lire qu'un seul charactère. et je ne suis pas sur qu'elle fonctionne avec des cstring

Reply

Marsh Posté le 18-09-2001 à 20:15:53   

Reply

Marsh Posté le 18-09-2001 à 20:16:49    

filebuf::filebuf
filebuf();
 
filebuf( filedesc fd );
 
filebuf( filedesc fd, char* pr, int nLength );
 
Parameters
 
fd
 
A file descriptor as returned by a call to the run-time function _sopen. filedesc is a typedef equivalent to int.
 
pr
 
Pointer to a previously allocated reserve area of length nLength.
 
nLength
 
The length (in bytes) of the reserve area.
 
Remarks
 
The three filebuf constructors are described as follows:
 
filebuf()
 
Constructs a filebuf object without attaching it to a file.
 
filebuf( filedesc )
 
Constructs a filebuf object and attaches it to an open file.
 
filebuf( filedesc, char*, int )
 
Constructs a filebuf object, attaches it to an open file, and initializes it to use a specified reserve area.

Reply

Marsh Posté le 18-09-2001 à 20:22:15    

filebuf f;
f.open("truc.txt",ios::in);
istream i(&f);
f.read...

Reply

Marsh Posté le 18-09-2001 à 20:37:37    

gizmo a écrit a écrit :

ca y est j'ai bien trouvé la fonction read, mais elle ne peux pas s'utiliser correctement comme tu le fais. Dans ton exemple, elle n'est censées ne lire qu'un seul charactère. et je ne suis pas sur qu'elle fonctionne avec des cstring  




 
 
Ouai mais avec une boucle for() c normalement facile de tout chopper dans un fichier et de le stocker avec fstream.read.
Ce qui m enerve c ke je faisaias comme ca l an dernier et je suis sur que ca marchait, il doit juste y avoir une petite couille dans ma syntaxe, mais je sais pas ou :sweat:

 

[edtdd]--Message édité par KiLiK--[/edtdd]

Reply

Marsh Posté le 18-09-2001 à 20:45:06    

cedric80 a écrit a écrit :

filebuf f;
f.open("truc.txt",ios::in);
istream i(&f);
f.read...  




 
A quoi correspond le istream i(&f) ?

Reply

Marsh Posté le 18-09-2001 à 21:01:08    

KiLiK a écrit a écrit :

 
 
A quoi correspond le istream i(&f) ?  




 
Tu instancies un objet istream (i) en lui passant un pointeur sur un filebuf en paramètre.

Reply

Marsh Posté le 18-09-2001 à 21:17:09    

filebuf c dans kelle classe?

Reply

Marsh Posté le 18-09-2001 à 21:18:58    

packe filebuf.read n a pas l air d exister.

Reply

Marsh Posté le 18-09-2001 à 21:44:25    

KiLiK a écrit a écrit :

packe filebuf.read n a pas l air d exister.  




Regarde plus haut ce que j'ai écrit. C'est istream.read et pas filebuf.

Reply

Marsh Posté le 18-09-2001 à 22:44:22    

Ca marche pas. Quelle est la syntaxe exacte pour lire les char d un fichier toto.txt les stocker kk pars en memoire et foutre un pointeur dessus que je puisse les recuperer?
 
Je suis preneur de toute solution meme si je prefere la solution avec fstream.read.
 
SVP ca urge a cause de ca il m est impossible de verifier le reste de mon pgrm.
 
 
Merci d avance.

Reply

Marsh Posté le 18-09-2001 à 22:50:16    

Et bien pour le vérifier en attendant de trouver tu n'as qu'à remplir ton char * "à la main".

Reply

Marsh Posté le 19-09-2001 à 19:21:57    

KiLiK a écrit a écrit :

Voila j'ai un pb dans mon code de c++, mon but est de lire les caracteres d un fichier texte et de les stocker dans une liste.
 
inlude<iostream.h>
include<fstream.h>
 
void main() {
 
fstream fic;
char *valeur;
fic.open("c://tp.txt", ios::in);
fic.read((char*) & valeur, sizeof(char));
cout << veleur[0];
 
}
 
Apparement d apres visual C++ le fichier est bien lu mais c au nv du cout que ca coince. J'arrive pas a recuperer la valeur sur lakelle ponte valeur que ce soit via valeur[0], valeur ou *valeur.
 
Alors comment faire pour lire les caracteres du fichier et les stocker dans une liste?
 
Merci d avance a tous ceux qui m aideront.  




 
 
Alors tjrs personne?
 
Jai absolument besoin de pouvoir lire ce putain de fichier  :cry:

Reply

Marsh Posté le 20-09-2001 à 00:09:31    

Hop, en 2 coup de cuillere a pot on fabrique un truc qui marche.
Bon, j'ai pas stocké dans une liste, car il faut bien que tu aies un peu de boulot a faire...
 

Citation :

#include <iostream.h>
#include <fstream.h>
 
void main() {
 
fstream fic;
char valeur;
fic.open("F://testit//main.cpp", ios::in);
while(fic.read(&valeur, sizeof(char)))
 cout << valeur;
}


A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 20-09-2001 à 11:23:24    

c'est un exemple, avec de la STL puisque tu sembles vouloir l'utiliser.
a+
 
-------------------------------
std::fstream l_stream;
std::list<char>  l_liste;
char    ch='\0';
 
l_stream.open("on_fichier.xxx", ios::in);
if (!l_stream)
 {
  printf("error\n" );
  return -1;
 }
 
l_liste.clear();
while(l_stream.get(ch))
{
     #if defined(unix)
     if(ch != 13)
     #endif
 l_liste.push_back(ch);
}
 
l_stream.close();
 
----------------------------

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed