Bonjour,
Je suis en train d’écrire un programme au cours duquel je dois transformer une chaîne de caractère en un « double ». De manière plus précise, cette chaîne est issue d’un fichier .txt dont je donne un extrait ci-dessous.
Le but est d’obtenir, pour chaque excited state (il y en a 12 au total), les valeurs de l’énergie E en eV et la valeur de f, sous forme de « double ». J’ai récupéré l’énergie sous forme de double grâce à la fonction sscanf, mais celle de f, que j’ai séparé à chaque fois du f=, reste sous forme de chaîne de caractères. Je souhaiterais l’obtenir sous forme de double mais je ne sais pas comment opérer la conversion.
Le code est donné ci-dessous.
Ainsi, lorsque je demande l'impression des valeurs de f, je suis obligé de le demander sous forme de chaîne (la chaîne chainefnew). Comment dois-je procéder pour obtenir un double ?Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> double produit_spectre(void) { FILE *spectre_th; int i,j; double E=0,f=0; char line3[200]; char chaine1[200],chaine2[200],chainef[200][200]; char chainefnew[200][200]; // ouverture du fichier spectre_th=fopen(SPECTRE_TH,"r"); // vÈrification de la bonne ouverture du fichier if(spectre_th!=NULL) printf("Fichier spectre theorique trouve\n"); else {printf("Fichier spectre theorique non trouve\n"); return 0;} while (fgets(line3,200,spectre_th)!=NULL) // on lit chaque ligne du fichier { sscanf(line3,"%s %s",chaine1,chaine2); // on lit les 2 premieres chaines de caracteres if(strcmp(chaine1,"Excited")==0 && strcmp(chaine2,"State")==0) // si la chaine commence par "Excited State"... { /*...on fait imprimer les valeurs de E... */ sscanf(line3,"%*s %*s %*s %*s %lf %*s %*lf %*s %s",&E,chainef); printf("\nE=%f",E); /*...et celle de f en séparant la valeur du f= */ for(i=0;i<12;i++) { strncpy(&chainefnew[i][0],&chainef[i][2],6); } printf("\tf=%s\n",chainefnew); } }
Merci de votre aide
-----