Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
982 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Format scanf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Format scanf

n°551627
meerthyl
Posté le 27-10-2003 à 15:47:02  profilanswer
 

Bon, toujours dans mon problème d'extraction de logs, je suis confronté à la ligne suivante :
 

Citation :

2003-10-27 15:37:12 Truc Machin envoit: Blablabla
2003-10-27 15:37:57 Bidule Chose envoit: Hop hop hop
2003-10-27 15:38:39 Machin Chose envoit: Tadam


 
Et le jeu, bin c'est de récupérer "Truc Machin", "Bidule Chose" et "Machin Chose".
 
Les noms peuvent contenir des lettres (accentuées ou nom), des chiffres, certains caractères spéciaux et bien sûr, des espaces. Ils font entre 3 et 18 caractères de long.
 
Et voila le soucis : quel format je peux bien utiliser pour récupérer le nom ? :sweat:
 
Si j'utilise %s, il ne me récupère que les noms composés d'un seul "bloc", si j'utilise %18s (longueur max.), il récupère un bout du "envoit" si le nom est plus court et ça capote.
 
Pour l'instant, j'utilise :

Code :
  1. scanf("%4s-%2s-%2s %8s %18s envoit: %[^\n]" );


 
(bien sûr, ça ne va pas...)
 
Quelqu'un a-t-il déjà été confronté à ce problème ?


Message édité par meerthyl le 27-10-2003 à 16:38:45
mood
Publicité
Posté le 27-10-2003 à 15:47:02  profilanswer
 

n°551688
red factio​n
Posté le 27-10-2003 à 16:36:10  profilanswer
 

jai eu ce prob ya pas longtemp pour  un logiciel de chat ou les nickname envoyes par le serveur pouvait contenir des espaces;
 
jlai fait a la main finalement (peu etre pas la meilleure solution...)

n°551691
meerthyl
Posté le 27-10-2003 à 16:39:35  profilanswer
 

Comment ça "fait à la main" ?

n°551694
red factio​n
Posté le 27-10-2003 à 16:53:35  profilanswer
 

ben caractere par caractere
par exemple le serveur recoit un truc comme ca :
 
 

Code :
  1. Red faction\n Nick name 1\n Te st\n
  2. while(*str!='\n'){
  3.     str++;
  4. }
  5. ...


Message édité par red faction le 27-10-2003 à 16:53:55
n°551700
meerthyl
Posté le 27-10-2003 à 16:57:50  profilanswer
 

S'il faut le faire à la main, je vais chercher du côté de <string.h> pour vérifier si la chaine "envoit:" est présente, et le cas échéant, récupérer le texte alors, merci :jap:

n°551704
Cherrytree
cn=?
Posté le 27-10-2003 à 17:08:21  profilanswer
 

envoyer est un verbe du premier groupe. Il envoie.


---------------
Le site de ma maman
n°551711
meerthyl
Posté le 27-10-2003 à 17:19:00  profilanswer
 

T'es cruel, j'espérais que t'avais une solution. :'(
Enfin j'avais un doute mais la flemme de vérifier. :/
Merci tout de même.

n°551722
Cherrytree
cn=?
Posté le 27-10-2003 à 17:31:37  profilanswer
 

Effectivement je pense que la solution c'est "à la main". Perso, je récupèrerais toute la ligne. Je prendrais une sous-chaine en enlevant les 19 premiers chars, puis je ferais une recherche de la première occurence du mot "envoie" ce qui me permettrait de spliter en deux partie : le nom et le message. En Java c'est dix lignes.


---------------
Le site de ma maman

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Format scanf

 

Sujets relatifs
[PHP/MySQL] Dilemne : stockage en base du texte au format HTML...Format d un fichier AVI
[JAVA] format de date tordu ;)format de date inversé sous asp.Net
[HTML] Format des nombres dans un inputDirectShow + Builder 6 => Problème de lieur avec TIME_FORMAT_FRAME
2tits questions sur scanf et printfFormat de date
[Perl]Valider le format d'une chaine de caractèresProblème de conversion de format de date....
Plus de sujets relatifs à : Format scanf


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR