Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1184 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°60135
kilik
Posté le 18-09-2001 à 18:59:24  profilanswer
 

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.

mood
Publicité
Posté le 18-09-2001 à 18:59:24  profilanswer
 

n°60140
cedric80
Posté le 18-09-2001 à 19:31:07  profilanswer
 

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

n°60141
cedric80
Posté le 18-09-2001 à 19:32:31  profilanswer
 

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

n°60142
kilik
Posté le 18-09-2001 à 19:35:56  profilanswer
 

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.

n°60144
cedric80
Posté le 18-09-2001 à 19:42:19  profilanswer
 

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.

n°60145
gizmo
Posté le 18-09-2001 à 19:43:58  profilanswer
 

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.

n°60150
kilik
Posté le 18-09-2001 à 19:59:43  profilanswer
 

#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  :(

n°60152
cedric80
Posté le 18-09-2001 à 20:10:45  profilanswer
 

Tu dois utiliser filebuf et istream.

n°60153
kilik
Posté le 18-09-2001 à 20:14:39  profilanswer
 

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

n°60155
gizmo
Posté le 18-09-2001 à 20:15:53  profilanswer
 

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

mood
Publicité
Posté le 18-09-2001 à 20:15:53  profilanswer
 

n°60156
gizmo
Posté le 18-09-2001 à 20:16:49  profilanswer
 

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.

n°60157
cedric80
Posté le 18-09-2001 à 20:22:15  profilanswer
 

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

n°60161
kilik
Posté le 18-09-2001 à 20:37:37  profilanswer
 

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]

n°60164
kilik
Posté le 18-09-2001 à 20:45:06  profilanswer
 

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) ?

n°60170
cedric80
Posté le 18-09-2001 à 21:01:08  profilanswer
 

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.

n°60177
kilik
Posté le 18-09-2001 à 21:17:09  profilanswer
 

filebuf c dans kelle classe?

n°60180
kilik
Posté le 18-09-2001 à 21:18:58  profilanswer
 

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

n°60186
cedric80
Posté le 18-09-2001 à 21:44:25  profilanswer
 

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.

n°60199
kilik
Posté le 18-09-2001 à 22:44:22  profilanswer
 

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.

n°60203
cedric80
Posté le 18-09-2001 à 22:50:16  profilanswer
 

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

n°60451
kilik
Posté le 19-09-2001 à 19:21:57  profilanswer
 

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:

n°60533
gilou
Modérateur
Modzilla
Posté le 20-09-2001 à 00:09:31  profilanswer
 

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é!  --
n°60584
SoWhatIn22
Posté le 20-09-2001 à 11:23:24  profilanswer
 

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();
 
----------------------------

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
Delphi: Besoin d'aide ![VB/ASP] SUPER URGENT...
Besoin d'aide pour lancer une commandeAide sous VB6
[ PHP ] : pb inexplicable avec un simple formulaire !Aide pour une idée de prog
g besoin d' un minuscule prog en c++ URGENT A L' AIDEEEEEEEEE 
Plus de sujets relatifs à : Urgent : besoin d'aide sur un code simple de c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR