Urgent : besoin d'aide sur un code simple de c++ - Programmation
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".
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.
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.
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.
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
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 ?)
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
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.
Marsh Posté le 18-09-2001 à 20:22:15
filebuf f;
f.open("truc.txt",ios::in);
istream i(&f);
f.read...
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
[edtdd]--Message édité par KiLiK--[/edtdd]
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) ?
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.
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.
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.
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".
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
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> |
A+,
[edtdd]--Message édité par gilou--[/edtdd]
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();
----------------------------
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.