Bjr à tous,
Je dois lire un fichier texte dont les lignes sont au format suivant :
chaine_sans_espace 0x10 1 "chaine quotée avec des espaces"<CR><LF>
Actuellement, je charge la ligne dans un char buffer[], que je parse avec un sscanf.
Le problème est que sscanf traite le charatère espace (' ') comme un séparateur de champ. Cela me convient pour les 3 premieres données de la ligne, mais pas pour la dernière qui elle est quotée et peut contenir des caractères espace (' ').
Heureusement pour moi, la chaîne problématique se trouve en fin de ligne.
Je parcours donc le buffer[] de lecture de fichier avec un pointeur en comptant le nombre d'espace afin de me positionner au bon endroit càd un cran après le nième (3 dans l'exemple) caractère espace ' ' puis strcpy+strlen pour recopier la donnée dans la variable destination.
Mis à part les warnings du compilateur sur la dangerosité de l"utilisation de sscanf, strcpy et srlen, je trouve inélégante une telle méthode de récupération de la donnée quotée.
Il y a-t'il une solution plus appropriée à ce genre de problème ?
N.B. Ce n'est pas mon cas, mais on remarquera que le problème se corse si le champ quoté n'est pas en dernière position sur la ligne.
Amicalement, à tous pour avoir prété attention à ce message.
Partager