begin process at 2012 02 13 05:23:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

lecture + conversion char->double


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lecture + conversion char->double

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ée 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 constructeur de conversion explicite [ par eishtein ] bonjour les gars; comme je suis un débutant en c++, j'aimerais bien savoir comment on pourrait convertir un nombre de type quelconque en un nombre de Problème renommer des fichiers avec la fonction rename() [ par kepon72 ] Bonjour, Voila j'ai coder un petit programme en C qui me permet de renommer des fichiers .avi présent dans un répertoire de la même façon le Titre est warning: deprecated conversion from string constant to 'char*' [ par flateur18 ] Bonjour à tous, j'ai réalisé un programme gcc qui se compile parfaitement, or j'ai des "warning" que je souhaiterais supprimer. celui qui m'énerve m Lecture/ Ecriture de valeur à artir d'un fichier texte [ par twity_osa ] Bonjour Je suis un débutant en C et j'ai un projet qui a pour objet la compression d'image...donc je doit faire stocker l'image (les valeurs des pixe


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,732 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales