× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 [C]Recuperer données dans un stringSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
letalent
  Posté le 05/05/2009 @ 13:41 
Aller en bas de la page 
Petit astucien
Bonjour, voila je suis débutant en c et je voudrais savoir comment faire ceci : J'ai un fichier qui sera toujours de cette forme : P6 245 265 245 je voudrais lire ce fichier et récupérer toutes ses données dans leur format approprié( je veux que les 3 nombres soient stocké dans des int pour pouvoir les reutiliser ) merci
Publicité
a_parisfr
 Posté le 14/05/2009 à 12:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Tu peux utiliser la procedure sscanf().

int int2,int2,int3 ;

char str1[255] ;

la variable "ma_chaine" est un string contenant ton texte à analyser

sscanf(ma_chaine,"%s %d %d %d", &str1,&int1,&int2,&int3) ;

http://membres.lycos.fr/dancel/c/c60_70.htm



Modifié par a_parisfr le 14/05/2009 12:18
RandD
 Posté le 19/05/2009 à 20:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut, c'est très simple à réaliser, je te conseil de faire ceci en 3 étapes:

1) Tu ouvre le fichier avec la fonction open()

2) Tu le lis avec la fonction read().

3) Tu le parse avec la fonction strtok() ou manuellement.

->Si vraiment tu galère, je te fournit le code source, t'aura plus qu'a compiler...

ciao !



Modifié par RandD le 19/05/2009 21:17
RandD
 Posté le 19/05/2009 à 21:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Voilà mon programme, il te retournera un tableau de char * à 2 dimension, tu n'auras plus qu'a convertir les valeurs du tableau (les numéros parser) avec un cast ou la fonction atoi, c'est coder sous UNIX je sais pas si tu utilise Windows, dans ce cas, change le pour qu'il devienne portable.

Enjoy !

#include <unistd.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>

char *get_begin(char *s)
{
while (*s && *s == ' ')
s++;
return(s);
}

char *get_end(char *s)
{
while (*s && *s != ' ')
s++;
return(s);
}

char *my_strndup(char *str, int n)
{
char *buffer;
char *buffer2;

buffer = malloc(n + 1);
buffer2 = buffer;
while (n && *str)
{
*buffer = *str;
buffer++;
str++;
n--;
}
*buffer = '\0';
return (buffer2);
}


char **parse_file(char *str)
{
char *s;
char *fin;
int count;
char **tablo;

if (!str)
return (0);
for (s = get_begin(str), count = 0; *s; count++)
{
s = get_end(s);
s = get_begin(s);
}
tablo = malloc( (count+1) * sizeof(char *));
for (s = get_begin(str), count = 0; *s; count ++)
{
fin = get_end(s);
tablo[count] = my_strndup(s,fin - s);
s = fin;
s = get_begin(s);
}
tablo[count] = 0;
printf("%s", tablo[3]); /*Tu pourra tester le tableau en affichant ses valeurs ici*/
return (tablo); /*Cette fonction retourne ton tableau de numero parser*/
}

int open_file(char *file)
{
int fd;
char buf[1024];

fd = open(file, O_RDONLY);
if (fd == -1)
{
printf("Erreur d'ouverture du fichier !\n"); /*Verification de la valeur du filedescriptor*/
exit(EXIT_FAILURE);
}
read(fd, buf, 1024);
parse_file(buf);
return (0);
}

int main(int ac, char **av)
{
if (ac == 1)
{
printf("Veuillez entrer un nom de fichier !\n"); /*Verification du fichier*/
exit(EXIT_FAILURE);
}
else
open_file(av[1]);
return (0);
}

letalent
 Posté le 19/05/2009 à 21:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je te remercie pour cette reponse tres complete qui a resolu mon probleme merci a toi bonne soirée

RandD
 Posté le 19/05/2009 à 21:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

De rien

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
89,99 €Disque dur externe portable Seagate Expansion 4 To USB 3.0 à 89,99 €
Valable jusqu'au 06 Août

Amazon fait une promotion sur le disque dur externe portable Seagate Expansion d'une capacité de 4 To à 89,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 120 €. Ce disque dur externe portable au format 2,5 pouces dispose d'une interface USB 3.0 compatible USB 2.0. Une excellente affaire pour ce disque dur qui offre des débits de 115 Mo/s. Il n'est pas soudé et est donc démontable si vous souhaitez le réutiliser ailleurs (console, NAS, PC).


> Voir l'offre
549,90 €Portable Honor Magicbook 14 (FullHD IPS, Ryzen 5, 8Go, 256Go SSD) + sac à dos + souris à 549,90 €
Valable jusqu'au 09 Août

Amazon fait une promotion sur l'ordinateur portable Honor Magicbook 14 accompagnée d'une souris sans fil Honor Mouse (valeur 29,90 €) et d'un sac à dos Honor Backpack (valeur 39,90 €) qui passe à 549,90 € livré gratuitement. Une bonne affaire pour ce portable bien équipé : écran 14 pouces FullHD IPS, Ryzen 5 3500U, 8 Go de RAM, SSD PCI-E 256 Go, WiFi, Bluetooth, Webcam et Windows 10. Le portable pèse 1,4 kg et offre jusqu'à 9h30 d'autonomie. Notez que la version 15 pouces passe également à ce prix (écran plus grand/1,53 kg)


> Voir l'offre
109,99 €Disque dur externe Western Digital Elements Desktop USB 3.0 6 To à 109,99 €
Valable jusqu'au 06 Août

Amazon propose actuellement le disque dur externe Western Digital Elements Desktop USB 3.0 6 To à 109,99 € livré gratuitement. On le trouve ailleurs à partir de 150 €. Ce disque dur dispose d'un grande capacité de stockage (6 To) et d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. Une très bonne affaire. 


> Voir l'offre

Sujets relatifs
recuperé ds données d'un formulaire dans un autre
Récupérer données de 3 fichiers Excel en 1 seul !!
Récupérer données de 3 fichiers Excel en 1 seul !!
Récupérer données de 3 fichiers Excel en 1 seul
Assistant formulaire de données dans VS 2005
Ajout de base de données Accès dans VB.NET
Comment mettre un temps dans un Script
Comment exclure 0 dans une fonction
VBA récupérer couleur sur image collée
forcer l'acceptation de localisation dans les paramètres de flash
Plus de sujets relatifs à [C]Recuperer données dans un string
 > Tous les forums > Forum Autres langages