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

  FORUM HardWare.fr
  Programmation

  [C++] problème de fscanf : comment faire de l'alloc dyna de mem ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] problème de fscanf : comment faire de l'alloc dyna de mem ?

n°113704
torpe23
Posté le 18-03-2002 à 17:15:37  profilanswer
 

j'ai déclaré un char *buffer. Mais lorsque je fais mon fscanf("%s" ), comment allouer assez de mémoire à buffer, étant donné que je ne connais pas la taille de mon %s ? Je veux bien une solution, si vous savez !
 
merci d'avance

mood
Publicité
Posté le 18-03-2002 à 17:15:37  profilanswer
 

n°113730
cycojesus
Mèo Lười
Posté le 18-03-2002 à 17:37:51  profilanswer
 

:??:  
si tu connais pas la taille ça va être dure !
 
un buffer a par définition une taille fixe, suffisemment importante.
 
sinon l'allocation dynamique c'est :

char* buffer;
buffer = (char*)malloc(taille_de_ton_buffer_en_octets);
...
free(buffer);


---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°113750
torpe23
Posté le 18-03-2002 à 17:56:46  profilanswer
 

je sais comment on fait un alloc quand même (!), mais ce n'était pas la question !

n°113752
cycojesus
Mèo Lười
Posté le 18-03-2002 à 18:02:11  profilanswer
 

:fou:


---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°113818
Jar Jar
Intaigriste
Posté le 18-03-2002 à 20:22:32  profilanswer
 

Je ne vois qu'une solution : utiliser fgets (et pas fscanf, qui PU LE PATé), avec une limitation en taille, et si la ligne n'est pas finie, hop ! un autre fgets (bref, une boucle qui continue tant qu'on n'arrive pas à la fin de la ligne) qui viendra prolonger la chaîne (realloc 15 y0uR m45t3R).

n°113822
deathsharp
Posté le 18-03-2002 à 20:24:20  profilanswer
 

cycojesus a écrit a écrit :

:??:  
si tu connais pas la taille ça va être dure !
 
un buffer a par définition une taille fixe, suffisemment importante.
 
sinon l'allocation dynamique c'est :

char* buffer;
buffer = (char*)malloc(taille_de_ton_buffer_en_octets);
...
free(buffer);
 




 
en C c'est ca mais surrement pas en C++ (qui est marker sur le topic )


---------------
What butter and whiskey won't cure, there is no cure for.
n°113839
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-03-2002 à 21:04:10  profilanswer
 

Jar Jar a écrit a écrit :

(et pas fscanf, qui PU LE PATé)




 
C'est bien connu:
 
http://fscanf.ca.pu.le.pate.ath.cx/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°113845
LeGreg
Posté le 18-03-2002 à 21:22:34  profilanswer
 

fscanf ou fgets ne te permettent pas de faire ca.
Soit tu le fais en plusieurs passes
avec des realloc quand tu as besoin de rajouter
des caracteres,
soit tu utilises les fonctions de la librairie standard
C++ qui te font ca tout seuls:
string (chaine dynamique) et getline.
 
A+
LEGREG

n°113847
Jar Jar
Intaigriste
Posté le 18-03-2002 à 21:26:42  profilanswer
 

legreg a écrit a écrit :

string (chaine dynamique) et getline.



getline, c'est génial, mais c'est pas portable :'(

n°113897
LeGreg
Posté le 18-03-2002 à 22:57:20  profilanswer
 

getline pas portable??
 
Il suffit pourtant d'avoir un compilateur C++,
il me semble.
 
Bon evidemment ca marche pas en C..
 
LEGREG

mood
Publicité
Posté le 18-03-2002 à 22:57:20  profilanswer
 

n°113902
Jar Jar
Intaigriste
Posté le 18-03-2002 à 23:04:40  profilanswer
 

legreg a écrit a écrit :

getline pas portable??
 
Il suffit pourtant d'avoir un compilateur C++,
il me semble.
 
Bon evidemment ca marche pas en C..



Ça marche en C, mais sur les systèmes GNU.
Pour le C++, je viens d'essayer sous Solaris avec g++, et c'est niet.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°113905
verdoux
And I'm still waiting
Posté le 18-03-2002 à 23:08:02  profilanswer
 

Jar Jar a écrit a écrit :

 
Ça marche en C, mais sur les systèmes GNU.
Pour le C++, je viens d'essayer sous Solaris avec g++, et c'est niet.  




Tu dois confondre la lib readline et la méthode getline de iostream.

n°113910
Jar Jar
Intaigriste
Posté le 18-03-2002 à 23:22:07  profilanswer
 

Verdoux a écrit a écrit :

Tu dois confondre la lib readline et la méthode getline de iostream.



Non, je confondais avec la fonction getline de la glibc2. Désolé.  
Et pis z'avez qu'à pas faire de C++, d'abord.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°113923
bjone
Insert booze to continue
Posté le 18-03-2002 à 23:37:59  profilanswer
 

torpe23, pour ton blem, tu peux utiliser une string à la quelle tu va ajouter chaque octet que tu va lire, la string se redimentionnant toute seule... mais bon c boeuf...

n°114006
Jar Jar
Intaigriste
Posté le 19-03-2002 à 10:43:36  profilanswer
 

bjone a écrit a écrit :

torpe23, pour ton blem, tu peux utiliser une string à la quelle tu va ajouter chaque octet que tu va lire, la string se redimentionnant toute seule... mais bon c boeuf...


AAAAAAAARRRGGHHHH !!! Pitié, surtout ne faites jamais de trucs comme ça !!!


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°114957
bjone
Insert booze to continue
Posté le 20-03-2002 à 14:34:28  profilanswer
 

bin c boeuf.... :lol:


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

  [C++] problème de fscanf : comment faire de l'alloc dyna de mem ?

 

Sujets relatifs
[open gl débutant] g un p'tit problème pour commencer(install de GLUT)[Debutant] Problème PHP après installation
[HTML] Problème chiant avec la balise TABLEMySQL , problème avec les dates ....aide (fastoche)
PROBLEME VISUAL BASIC 5.0Probléme en VB.6.0
Probleme avec du HTML sous Netscape[HtmlHelp ->chm] Problème entre Binary TOC et les dossiers du sommaire
Problème C++ => template[PHP] problème odbc num rows
Plus de sujets relatifs à : [C++] problème de fscanf : comment faire de l'alloc dyna de mem ?


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