Salut,
Je veut utiliser fgets pour recuperer chaque ligne d'un fichier. Le probleme c'est que cette fonction necessite qu'on definisse la taille de la chaine. Moi je traite des fichiers dont la taille de chaque ligne peut changer ...
Que faire?
Salut,
Je veut utiliser fgets pour recuperer chaque ligne d'un fichier. Le probleme c'est que cette fonction necessite qu'on definisse la taille de la chaine. Moi je traite des fichiers dont la taille de chaque ligne peut changer ...
Que faire?
Est-ce que la quantité de mémoire disponible est un critére rédhibitoire?
je t'avoue ne pas avoir compris ta question
La quantité de mémoire est elle vraiment insuffisante?
Sinon la "perte de place" en utilisant une taille fixe pour chaque ligne ne devrait pas poser de probleme.
A part dans des cas extremes ou quelques lignes font beaucoup de caracteres
et la majorité en fait quelques uns.
En fait je veut faire un programme qui va traiter different types de fichiers
Donc pour un meme fichier les lignes seront peut etre toute longues ou toute courte mais d'un fichier à l'autre ca peut varier.
Et si j'ai compris le taille max de fgets c'et lui qui defini la taille max de la chaine que je recupere si ma chaine est plus longue que cette taille max je perd des donées :
Je ne crois pas qu'il y ait une façon directe de procéder ,avec des fonctions C.
Une solution,mais il y en a des meilleures, serait de faire une structure adaptée à ce probleme.
Certain doivent connaitre des librairies permetant facilement la gestion de tableau avec des cases de taille variable (type vector en C++).
Tu as deux solutions:
- lire dans un tableau de caractere que tu consideres 'assez grand' pour ton usage (500 caracteres par exemple);
- allouer dynamiquement le tableau de caracteres en agrandissant sa taille (realloc) tant que la fin de ligne ('\n') n'est pas trouvee. On peut ainsi construire une fonction a base de fgetc(), malloc() et realloc().
Je vais regarder ce que je trouve sur realloc
Voilà qui devrait répondre à ta question : Lire une ligne d'un fichiers en C
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager