> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
92,99 €Disque dur externe portable Western Digital Elements USB 3.0 4 To à 92,99 €
Valable jusqu'au 25 Février

Amazon propose actuellement le disque dur externe portable Western Digital Elements USB 3.0 4 To à 92,99 € livré. On le trouve ailleurs à partir de 115 €. Ce disque dur qui tient dans la main est silencieux, ne chauffe pas et dispose 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
139,99 €NAS QNAP TS-251+ 2 baies (quad core, 2 Go RAM) à 139,99 €
Valable jusqu'au 26 Février

Amazon propose actuellement le NAS QNAP TS-230 2 baies à 139,99 € livré gratuitement. On le trouve ailleurs à partir de 185 €. Ce NAS est parfait pour sauvegarder vos données. Vous pouvez accéder à distance à vos fichiers, et disposez même d'un cloud privé pour partager facilement vos documents avec vos proches. Grâce à ses 2 baies, vous pourrez étendre votre capacité de stockage ou bien sécuriser vos données en mettant en place un RAID.  Reposant sur un processeur quad-core Realtek 1.4 GHz et 2 Go de RAM, le TS-230 délivre de bonnes performances multitâches exceptionnelles (jusqu'à 113 Mo/s) et prend en charge le décodage matériel 4K (H.264) et le transcodage en temps réelCe NAS intègre en outre 2 ports USB 3.0 et deux ports Ethernet Gigabit et offre la possibilité d'un chiffrement matériel.


> Voir l'offre
14,90 €Windows 10 Pro 32/64 bits OEM à 14,90 €
Valable jusqu'au 26 Février

Le vendeur sérieux Digital FR propose sur Amazon la clé d'activation pour Windows 10 professionnel en français 32 bits / 64 bits à 14,90 €. Cette clé livrée par email fonctionne avec l'outil d'installation et de création de support de Microsoft que vous pouvez télécharger ici ou directement avec l'ISO de Windows 10 Pro. De quoi installer légalement Windows 10 Pro sur un PC. Pour en savoir plus sur l'achat et l'installation d'une clé OEM de Windows 10, suivez les indications de notre dossier pratique.


> 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