Bifalgorithm post · Computer science one · Plaintext Files
How can fgets() safely read a plaintext file line by line?
How can fgets() safely read a plaintext file line by line? (Computer science one · Plaintext Files) — "Using fscanf() for arbitrary string input is potentially…
Ideas in this flowchart
- Lecture sûre des chaînes et des lignes d’un fichier en C
- L’utilisation de fscanf() pour une chaîne arbitraire est dangereuse en raison d’un contrôle limité des limites.
- Si l’entrée dépasse la capacité du tableau de caractères, un dépassement de tampon peut se produire.
- fgets() constitue une méthode plus sûre, car elle limite le nombre d’octets lus.
- La déclaration de fgets() est : char *fgets(char *s, int size, FILE *stream);
- s désigne la chaîne de caractères dans laquelle les données lues sont placées.
- size limite le nombre de caractères lus ; fgets() en lit au maximum size-1 pour réserver le caractère nul final.
- stream désigne le pointeur vers le fichier depuis lequel les données sont lues.
- fgets() ajoute automatiquement le caractère nul final à la chaîne.
- La lecture s’arrête à la fin du fichier ou lorsqu’un caractère de nouvelle ligne « \n » est rencontré ; ce caractère peut devoir être supprimé.
- fgets() permet de traiter un fichier ligne par ligne, puis de tokeniser chaque ligne pour extraire des données, notamment dans un fichier CSV.
- La valeur de retour NULL indique qu’aucun caractère supplémentaire n’a été lu et que la fin du fichier est atteinte.
- Exemple : ouvrir data.txt en lecture et utiliser line[1000], en supposant qu’aucune ligne ne dépasse 999 caractères.