Taille d'une chaine extraite d'un fichier

cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 15 mars 2011 à 11:18
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 18 mars 2011 à 09:58
Bonjour

Je suis en train de lire à partir d'un fichier ligne par ligne en utilisant fgets, mais avec fgets je doit introduire la longueur maximale de la chaine attendu.

par exemple 500:
fgets(answer_buff,500,intermFileRePtr)


Quand je veux récupérer la longueur exacte de la chaine extraite en utilisant strlen() ça m'affiche le 500 que j'ai introduit, apparemment le fgets place le '\0' d'une manière statique.


ce serait agréable si quelqu'un me donne une proposition pour que je puisse récupérer la longueur exacte.

Merci
cordialement

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
15 mars 2011 à 11:57
Pourtant ça fonctionne bien.
Avec le code suivant, fgets place le 0 terminal correctement:
#include <stdio.h>
#include <string.h>

int main(void)
{
   FILE* pFile;
   char mystring [100];

   pFile = fopen ("myfile.txt", "r"); // "Kikoo" ecrit dans myfile.txt
   if (pFile == NULL)
     perror ("Error opening file");
   else
   {
     fgets(mystring, 100, pFile);
     puts(mystring);// Kikoo
     printf("%i\n", strlen(mystring)); // Affiche bien 6 et pas 100
     fclose (pFile);
   }
   return 0;
}


Tu as du faire une erreur ailleur dans ton code.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
15 mars 2011 à 13:44
Merci pour la réponse je v vérifier ,je compile sous Linux, ca fait une différence ?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
15 mars 2011 à 14:03
je compile sous Linux, ca fait une différence ?

Normalement, non.
PS: Je compile aussi sous Linux, avec gcc 4.5

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
15 mars 2011 à 16:38
Bonjour

fgets arrête la lecture de la chaîne soit lorsqu'il rencontre un \n soit lorsqu'il atteint la longueur maximale, 500 dans ton cas.

Si strlen te renvoie systématiquement 500 c'est parce que les lignes de ton fichier font plus de 500 caractères. Tu dois donc déclarer answer_buff avec une taille suffisante, c'est à dire supérieure à la taille de la plus grande ligne de ton fichier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
18 mars 2011 à 09:58
Merci Ed73, desolé pour le retard de ce feedback , mais c'était plutôt parce que la déclaration de mon buffer était supérieure à 500 ;)
0
Rejoignez-nous