Ton problème est alors d'analyser une ligne composée :
-Pour commencer :1- éventuellement de caractères <blancs> à ignorer
2- d'une chaine sans <blancs> à ignorer
Cette partie est faite par le "%*s"
-ensuite3- de caractères <blancs> à ignorer
4- d'une chaine sans <blancs> à lire
Cette partie est faite par le "%s"
-pour terminer 5- de caractères <blancs> à ignorer
6- d'une chaine, ne commençant pas par un <blanc>, avec éventuellement des <blancs> à lire.
La chaine est terminée par un '\n' à ignorer ou par le '\0' terminal.
On ne peut plus utiliser le format %s et on utilisera le format %[] qui permet de traiter des chaines comportant des <blancs>
Le format %*[ ] (il y a un blanc entre les crochets) va permettre de lire tous les blancs et de les ignorer (à cause de *) (étape 5)
Le format %[^\n] va lire ensuite tous les caractères différents de '\n' (ou jusqu'à la fin de la chaine signalée par le 0 terminal) et les stocker (étape 6).
Exemple :
1 2 3 4
| char inSerial[] = " sms 3 toto est dans le bain";
char nu[10];
char toto[50];
sscanf(inSerial,"%*s%s%*[ ]%[^\n]",nu, toto); |
Attention, si la chaine est
char inSerial[] = " sms 3 toto est dans le bain ";, alors toto contiendra "toto est dans le bain ".
Partager