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

 


Dernière réponse
Sujet : aide rapide sscanf
slvn si j ai bien capté :)
sscanf transformes les caracteres speciaux, en %XX où XX est un nombre en hexadecimal, il faut donc que je remplace dnas la chaine ce %XX, par le caractere equivalent en ascii pour al page html,

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
slvn si j ai bien capté :)
sscanf transformes les caracteres speciaux, en %XX où XX est un nombre en hexadecimal, il faut donc que je remplace dnas la chaine ce %XX, par le caractere equivalent en ascii pour al page html,
barbarella non,
 
ça c'est autre chose.
 
Si tu envoies des variables qui peuvent contenir autre chose que des 012...9A..Za..z tu dois faire une fonction code_champ en faisant une boucle de lecture des char et en transformat les char indésirables par j += sprintf((dest+j),"%%x",(scr+i));
 
%x signifie que tu tranformes en hexa la valeur du caractère  
En fait l'espace va être transformé en %20 (en hexa) le fait de mettre un % de la valeur hexa du char est une convention mais tu peux la changer. Moi j'utilse $ a cause d'un bogue de IE dans un cas très rare.
 
Pour le décodage tu refais la même boucle mais en utilisant  
 sscanf((src+i+1), "%2x", &y)
 
ou 'y' est un : unsigned int
 
soit :  
 
if(*(src+i) == '%')
{
 sscanf((src+i+1), "%2x", &y)
 *(dest+j) = (char)y;
}
 
enfin un truc du genre :)

 

[edtdd]--Message édité par barbarella--[/edtdd]

slvn je parle de celle d un topic precedent
slvn c est a ce moment que la fonciton que tu m a passé sert non ?!
barbarella hehe
 
c'est normal. C'est bien connu la nature n'aime pas le vide. t'as pas encore vu ce qu'il va te faire quand tu vas vouloir passer des chaines comme : l'arrivée des français de 'france'
 
il faut que tu fasses une fonction de codage et de décodage our chaque variable. Normalement les carac doivent être transformé en %XX sauf les chiffres lettre de l'alphabet.
slvn justemement, j ai essayé de passer "aaaa bbbb" dans le premier champs  et il a trouvé "aaaa+bbbb" comme chaine.
barbarella ah oui,
 
la fonctionne change_et, transforme les '&' en ' ' afin de pouvoir utiliser le sscanf.
 
Attention n'oublie pas que avant le passage de param tu dois transformer les ' ' en '+', sinon t'auras des prob.
slvn ca se voit tant que ca :)
a premiere vue c est exactement ce qu il faut :)
 
merci:)
barbarella tu fais un script en C pour recup els param du CGI ?
 
si oui alors essaie ça
 
change_et(data);
if(sscanf(data,"M=%s O=%s P=%s",nomdico,mot,page) != 3)
{
  erreur = 102;
}
else
.......
 
 
La fonction 'change_et' :
 
void change_et(char *val)
{
  int i;
 
  i = 0;
  while(*(val+i) != '\0')
  {
    if(*(val+i) == '&')
      *(val+i) = ' '; // caractère blanc ascii = 32
 
    i++;
  }
}

 

[edtdd]--Message édité par barbarella--[/edtdd]

minusplus expression regulière (doit bien y avoir une lib en C)
ou getc + scan à la patte.
slvn et pour que ca s arrete au "&" je peux faire ca d une maniere simple ??
minusplus %s matche une chaine jusqu'à un whitespace (tab, espace, etc.)
slvn voila :
char*data="nom=my_name&prenom=my_fisrt_name";
char c1[25],c2[25];
 
alors >> sscanf(data,"nom=%s&prenom=%s",c1,c2) != 2
dans nom j ai : my_name&preom=my_fisrt_name
dans prenom j ai : $
 
ou ca cloche ????

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