begin process at 2012 05 30 15:05:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

recuperation de donnes sur fichier texte


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

recuperation de donnes sur fichier texte

vendredi 3 août 2007 à 21:17:56 | recuperation de donnes sur fichier texte

semnos21

 Bonjour,
poru certain d'entre vous ce que je vais demander va paraitre simple, ca tombe bien, j'en ai marre de me casser les dents et de perdre du temps la dessus... ---> codage en C
(dsl il n'y aura pas d'accent.. cause:qwerty de .....)


1.0    0.987    -12.7    6.651    169.6    0.019    81.2    0.504    -9.6
2.0    0.972    -25.2    6.514    160.5    0.038    73.7    0.497    -19.6
3.0    0.954    -38.0    6.378    151.5    0.054    66.6    0.482    -30.0
24.0    0.783    141.4    2.060    21.1    0.132    -31.2    0.294    145.9
25.0    0.787    139.2    1.965    17.3    0.133    -32.9    0.300    140.6
31.0    0.755    126.3    1.655    -3.9    0.130    -45.6    0.362    121.5

voila le fichier en cause, maintenant je vous explique:
Je doit recuperer ces donnees dans un tableau de structure, c'est ce qui me semblais le mieu convenir, avec pour chaque ligne la frequence(1er colone), et par groupe de deux des valeurs (amplitude et angle pour les quatres cases d'une matrice...).
Si jusque la vous avez suivi j'ai une chance...

voici la structure

typedef struct S_mat
{
        double freq;
        double S_ang[4];
        double S_amp[4];
} S_mat;


voici mon bout de code foireux, enfin qui tourne daans une boucle qui me place au debut de chaque ligne...

fscanf(fichier,"%f%f%f%f%f%f%f%f%f", &tableau_S[i].freq, &tableau_S[i].S_amp[0], &tableau_S[i].S_ang[0], &tableau_S[i].S_amp[1], &tableau_S[i].S_ang[1], &tableau_S[i].S_amp[2], &tableau_S[i].S_ang[2], &tableau_S[i].S_amp[3], &tableau_S[i].S_ang[3]);
printf("Frequence:%2.2f S11: %4.4f , %4.4f S12: %4.4f , %4.4f S21: %4.4f , %4.4f S22: %4.4f , %4.4f \n",tableau_S[i].freq,tableau_S[i].S_amp[0],tableau_S[i].S_ang[0],tableau_S[i].S_amp[1],tableau_S[i].S_ang[1],tableau_S[i].S_amp[2],tableau_S[i].S_ang[2],tableau_S[i].S_amp[3],tableau_S[i].S_ang[3]);


Sur ce coup ci game over, pas de probleme, je em suis dit que j'avais ete un peu barbar...deuxieme essai plus soft: la aussi... banzai les valeurs de l'espace...

                    fscanf(fichier,"%f",&(tableau_S[i].freq));
                    fscanf(fichier," %f",&(tableau_S[i].S_amp[0]));
                    fscanf(fichier," %f",&(tableau_S[i].S_ang[0]));
                    fscanf(fichier," %f",&(tableau_S[i].S_amp[1]));
                    fscanf(fichier," %f",&(tableau_S[i].S_ang[1]));
                    fscanf(fichier," %f",&(tableau_S[i].S_amp[2]));
                    fscanf(fichier," %f",&(tableau_S[i].S_ang[2]));
                    fscanf(fichier," %f",&(tableau_S[i].S_amp[3]));
                    fscanf(fichier," %f",&(tableau_S[i].S_ang[3]));


Dernier recours... HEEELLLPPPP ...
J'ai du foirer la fonction scanf possible, mais tout ce que j'ai trouve dessus est un poil confu...
Ensuite utiliser de fgetc ou fgets... je trouvais ca aleatoire vu que les tailles de chaines sont a +-1 pres et que les gentils caractere genre '.' et '-' faut les gerer au cas par cas.... moi je me suis dit que ca me prendrais une semaine.. ca tombe mal me reste a peu pres moitie moins...
Voilou le probleme, je verifie que je n'ai pas laisse de variable ou autre obscure...
Ah si le 'i' qui se promene est incremente a chaque iteration de la boucle qui me place en debut de ligne (c'est une verification car il y a des lignes de texte dans le fichier dont je me tape royal.)

Sur ce, si quelqu'un a une solution ^^ amen, sinon, bah je suis pas dans le petrin moi...

Merci
Semnos21
(paul.g1987@gmail.com si c plus simple pour certain)

PS: si il y a deja je n'ai pas trouve ma reponse dsl
vendredi 3 août 2007 à 23:04:15 | Re : recuperation de donnes sur fichier texte

juju12

essaie %lf au lieu de %f car lecture de double.
samedi 4 août 2007 à 09:41:38 | Re : recuperation de donnes sur fichier texte

Cyr62110

Avec fgetc : int current_boucle = 0; int current_var= 0; int current_char = 0; double dbuf = 0; char cbuf = NULL; char* pcbuf = NULL; pcbuf = malloc(20*sizeof(char)); for(;;) { cbuf = fgetc(fichier); if(cbuf == ' ' || cbuf == (char)10) { pcbuf[current_char] = NULL; current_char = 0; dbuf = atof(pcbuf); switch(current_var) { case 0: tableau[i].freq = dbuf; break; case 1: tableau[i].S_amp[current_boucle] = dbuf; break; case 2: tableau[i].S_ang[current_boucle] = dbuf; break; } current_var++; free(pcbuf); if(current_var == 3) { current_boucle++; current_var = 0; } if(current_boucle == 4) { current_boucle = 0; break; } pcbuf = malloc(20*sizeof(char)); continue; } pcbuf[current_char] = cbuf; current_char++; } Bye
dimanche 5 août 2007 à 21:12:02 | Re : recuperation de donnes sur fichier texte

katsankat

Membre Club
ça fuit ces malloc en rafale.
De plus toujours vérifier que malloc réussit.
Remplacer le tout par char pcbuf[20]; même si fcanf() est plus élégant.

lundi 6 août 2007 à 09:47:26 | Re : recuperation de donnes sur fichier texte

Cyr62110

Désolé pour toi mais je libére la mémoire : current_var++; free(pcbuf); et ensuite je vérifie à quelle variable je suis arrivé, si c'est la troisieme j'incrémente current_boucle. Et si current_boucle est arrivé au maximum, je casse la boucle. Donc il n'y as pas besoin de remettre un free();. Bye. P.S:Je préfére cette methode car peut importe le séparateur des variable, on peut toujours adapter la methode rapidement.
mardi 7 août 2007 à 16:14:30 | Re : recuperation de donnes sur fichier texte

semnos21

Bon bah merci, il semblerai que l'utilisation du %lf a la place des %f suffise, je vais pousser quelques tests, voir si y'a pas de chausse trappe mais ca semble fonctionner... chui blase d'etre reste coince la dessusm, mais Merci a tous


Cette discussion est classée dans : fichier, tableau, amp, fscanf, ang


Répondre à ce message

Sujets en rapport avec ce message

Tableau de correspondance des fonctions c++ et de leur fichier #include [ par guguy ] BonjourJ'aimerais savoir s'il serait possible de trouver un tableau de correspondance entre les fonctions c++ et leur fichier #include (ex : cout -> i problème de lecture d'un fichier txt [ par yeager ] Bonjour!J'ai un problème pour la lecture d'un fichier texte. Le fichier est créé mais lorsque je donne le chemin d'accées fopen me renvoie la valeur N [C] lignes d'un fichier dans un tableau : Segmentation fault [ par Michel76 ] Bonjour,Pardonnez-moi de cette question de débutant.Soit un fichier contenant :-----001002-----Je souhaiterais mettre chacune des lignes de ce fichier tableau d'objet comme variable d'instance [ par MrKribou ] Bon dans le fichier .h (ou fait c comment qu'on appele se fichier la ? header ?) comment declare ton un tableau d'objet comme variable d'instance.Par pb avec tableau et fichier texte [ par krolanta ] Voila mon pb é que g un fichier texte avec des coordonnées et que je voudrais mettre chaque coordonnées ds une case du tableau.En fait ca revient a li Tableau multidimensionel et fichiers [ par AngeloVivaldi ] slt à tous.Voila, je voudrai mettre dans un tableau multidimensionel chaque ligne d'un fichier, puis modifier une ligne du tableau pour le réécrire da aide pour ouverture en hexa [ par alphaone ] Svp pouvais vous me faire un prog qui ouvre un fichier en hexa l'enregistre dans un tableau de nombre. et reconstitu le fichier à partir du tableau de REcuperer des donnée d'un fichier binaire vers une tableau de hachage [ par whiteknight ] Slt j'ai des problemes avec ma fonction load qui me permet de recuperer les données d'un fichier binaire et de les transférer vers un tableau de hacha placer un fichier texte dans un tableau [ par fred23 ] BonjourJe suis embété car j'ai besoin de lire un fichier text "tot.txt" dont les données sont rangées comme suit:toto,tata,titi,tutu,zut1zut2,rezut3pa Imprimer un tableau et un fichier txt [ par fred23 ] Bonjour,Je souhaiterais savoir comment je peux imprimer:un tableau[i][j] et un fichier texte de type toto.txtLe tout en C++.Merci.Fred23


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,544 sec (3)

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