Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : lecture + conversion char->double [ Archives / Divers ] (obby)

samedi 19 novembre 2005 à 18:54:19 | lecture + conversion char->double

obby

Bonjour,

  Je suis un peu embéter car je ne vois pas trop comment faire pour exposé mon petit souci. Je vais essayer d'être le plus clair possible.

 En fait, je dois récupérer des valeurs organisées en colonnes dans un fichier. En fait, j'ai plusieurs colonnes qui correspondent à des choses différentes et qui sont séparé par des tabulations, par exemple:

DATA1           DATA2           DATA3           DATA4..... '\n'
.0000E+00      .0000E+00      ...                                       \n


le problème consiste à récuperer les valeurs. J'arrive à récuperer la ligne entière sous forme d'une chaine de caractère et j'ai pensé à utiliser la fonction "double atof(char*)". Cependant, comment faire pour découper proprement cette chaine avant de faire la conversion. Et est-ce que la conversion va prendre en compte la partie "E+00"??


samedi 19 novembre 2005 à 20:20:27 | Re : lecture + conversion char->double

deck_bsd

Membre Club
utilise sscanf(variable_contenant_ta_ligne,"le format",variables_recevant_le_text_séparé);

le format : exemple "%[^;];%[^;];" cela signifie qu'il prend tout le text avant le ; il y a deux %[^;]; car une part colone.

exemple de code :

sscanf(lecture,"%[^;];%[^;];%[^;];",data.nom,data.date,data.acces);

Voila, je me doute que l'explication est limite, si tu comprend pas trop, dit le moi j'esseyerai de te l'expliquer mieu.

Bon code

++ALL

dimanche 20 novembre 2005 à 01:17:45 | Re : lecture + conversion char->double

Joky

Membre Club
Mé non, c'est d'la perte de temps :)
Récupérer la chaîne et ballader un ptit pointeur :)

if(!Meilleur("Joky")) return ERREUR;


dimanche 20 novembre 2005 à 09:39:59 | Re : lecture + conversion char->double

deck_bsd

Membre Club
Aussi, mais s il faut séparé pour mettre a chaque fois dans une variable différentes, le sscanf() est mieu.

dimanche 20 novembre 2005 à 13:30:34 | Re : lecture + conversion char->double

obby

euh j'suis pas sur d'avoir bien compris comment on utilisait cette fonction sscanf(). Cela récupère bien des chiffres et non des caractères car la partie chaine de caractère, ca y'a pas trop de problème.

je vais essayer pour voir ce que ca donne malgré tout.




dimanche 20 novembre 2005 à 13:51:51 | Re : lecture + conversion char->double

deck_bsd

Membre Club
Si tu n'y arrive pas esseye comme dit joky de "ballader un petit pointeur".

dimanche 20 novembre 2005 à 14:28:56 | Re : lecture + conversion char->double

obby

il faut un %[^;]; pour chaque colonne ??? car si oui, il est évident que cela n'est pas possible pour moi d'utiliser cette fonction car je ne connait pas par avance le nombre de colonnes (ni de lignes) dans les fichiers, cela est variable!!


 Pour l'histoire du pointeur, j'ai essayé mais ca marche dans le mauvais sens, j'enlève la partie qui m'interresse :

        f1.getline (c,512,'\n');
       double a = 0.0;
        d=c;
        while (*d != '\n')
        {
            while(*d != '    ')
            {
                d++;
            }
            d++;
        }

dimanche 20 novembre 2005 à 15:09:39 | Re : lecture + conversion char->double

deck_bsd

Membre Club
Ha autant pour moi je pensait que tu connaisait le nombre de colones. Oui alors le pointeurs est plus pratique.

exemple:

void recup(char *ligne){
char *lignetemp;
char carac;
lignetemp =ligne;
while(*lignetemp){
    carac=*ligne;
    if(carac=='    '){
       lignetemp++;
       ligne++
    }else{
    *lignetemp=carac;
    lignetemp++;
    ligne++;
    }
}
}
en claire, tantque la ligne est pas terminée on parcours la ligne et si le caractère contenut dans carac est égale a tab en passe au caractère suivant sans l'avoir affecter a la variable ligne temp.





dimanche 20 novembre 2005 à 16:09:21 | Re : lecture + conversion char->double

Joky

Membre Club
char *c = szChaine;
int iIndex = 0, iSize = 0,i=0;

Tant que *c différent de '\0'
   Si *c == ' '
      Alors copier de iIndex à iIndex+iSize szChaine dans une variable data[i]
        Tant que *c == ' '
           On avance le pointeur (c++)
            et l'index (iIndex++)
         Fin Tant Que
      On incrémente i
      On réinitialise la taille à 0 (iSize = 0)
   Fin Si
On avance le pointeur (c++)
   Si ce n'est pas le premier mot(i != 0)
      On avance l'index (iIndex++)
   Fin Si
On avance la taille (iSize++)
Fin Tant que
 
if(!Meilleur("Joky")) return ERREUR;

dimanche 20 novembre 2005 à 17:57:59 | Re : lecture + conversion char->double

obby

voila ce que j'ai fait, ca marche pas mal, le seul problème c l'optimisation mémoire qui m'a pas l'air au top

for (int i = 0; i< NbLignes;++i)
    {
        f1.getline (c,512,'\n');
        double a = 10.0;
        d=c;
        while (*d != 0)
        {
            CString tmp;
            while((*d != '    ')&&(*d !=0))
            {
                tmp += *d;
                d++;   
            }
            d++;
            int len = tmp.GetLength ();
            val = new char [len];
           
            for (int k=0;k<len;++k)
            {
                val[k] = tmp[k];
            }
            val[len]=0;
            a = atof(val);
        }


1 2

Cette discussion est classé dans : lecture, conversion, valeurs, char, double


Répondre à ce message

Sujets en rapport avec ce message

CONVERSION DOUBLE CHAR [ par DeAtHCrAsH ] Salut,J'ai un ptit pb... Je suis debutant et j'ai un ptit prob...Je veux utiliser la fonction atof mais quand je compile ca me dit : undeclared identi Conversion char -> double [ par titpeste ] Bonjour,je manipule des doubles avec 20 chiffres a peu pres derriere la virgule.Ils sont stockés dans des chaines de caracteres.Mais lorsque je fais u conversion double -> char [ par juliedb ] voila on a un probleme....examen dans qql heure et on voudrait savoir comment convertir des variables double en char... Conversion char -> double [ par obby ] Bonjour,   J'ai un petit souci, j'utilise la fonction atof() pour faire la conversion d'une chaine de caractère (ex : ".00000E+00") vers un double. C conversion double en char* [ par snakers07 ] bonjour, voici mon probleme void grilleSetText(ligne,colonne,char*Text;) est une fonction comme ont peut le voir qui pren en parametre char*or j'ai un C++ Conversion d'un int en const char* [ par jderf ] Bonjour, Je récupere d'une boîte de dialogue l'index du choix fait. Je souhaite afficher cette valeur dans un message box. Voici mon code Uint Choi Conversion chaine binaire en float, double... [ par renyone ] Bonjour, j'ai une chaine binaire (de 32 bits par exemple) et j'aimerais obtenir le float (ou double...) qu 'elle représente; Y a-t-il des fonctions dé Conversion de char en int ? [ par jnbrunet ] Salut,Je débute en c++... dans mon programme j'aimerai additionner les valeurs entrées en argument dans le main (argv). Le problème est que la variabl probléme de conversion un chaine AnsiSitring en une chaine char [ par freem1 ] je programme en c++ builder 6 et il ya un probléme au niveau de la conversion code:[char cl[16];cl = Edit2->Text.c_str();]</font


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.