J'ai déjà du code pour lire un fichier texte en utilisant fscanf()
, et maintenant j'ai besoin de le modifier pour que les champs qui étaient auparavant sans espace doivent permettre les espaces. Le fichier texte est essentiellement sous la forme de:Can fscanf() lit-il des espaces?
Titre: DONNÉES
Titre: DATA
etc ...
qui est essentiellement parsé en utilisant fgets(inputLine, 512, inputFile); sscanf(inputLine, "%*s %s", &data);
, la lecture des champs de données et en ignorant les titres, mais maintenant certains des champs de données doivent autoriser des espaces. J'ai encore besoin d'ignorer le titre et l'espace immédiatement après, mais ensuite lire dans le reste de la ligne, y compris les espaces.
Est-il possible de le faire avec la fonction sscanf()
? Sinon, quel est le plus petit changement que je peux apporter au code pour gérer correctement les espaces? MISE À JOUR: J'ai édité la question pour remplacer fscanf() par fgets() + sscanf(), ce que mon code utilise réellement. Je ne pensais pas vraiment que c'était pertinent quand j'ai écrit la question, c'est pourquoi je l'ai simplifié à fscanf().
Si vous l'analysiez avec 'scanf', vous pourriez aussi analyser quelque chose comme' title: DATA title: DATA' (c'est-à-dire tous sur une ligne). Si vous voulez autoriser les espaces dans les valeurs, quel sera le terminateur? Si newline, alors il semble que votre code original était un peu trop laxiste ... –
Aussi, comment décidez-vous de la taille du buffer 'str', et comment vous assurez-vous qu'il ne déborde pas? –
oui, quand les données peuvent avoir des espaces, la nouvelle ligne sera utilisée comme terminaison –