Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [C / C++ / C#] » fgets
Login Mot de passe

2 visiteurs sur ce topic (0 membre(s), 2 invité(s) )


Auteur
Sujet : fgets
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 29-04-2009 @ 18:05      Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,

J'ai un fichier toto.txt avec 2 lignes.
Je souhaite récupérer chacune d'elle dans des variables pour les réutiliser dans le code principal.

Code :


void lecture_fichier()
{
   char *name = "toto.txt";
   char line [ BUFSIZ ];

   FILE *file = fopen ( name, "r" );
   if ( file != NULL )
   {
      while ( fgets ( line, sizeof line, file ) != NULL )
      {
         printf("%s", line);

      }
   fclose ( file );
   }
   else
   {
      perror ("Impossible d'ouvrir le fichier.");
   }
}



Toute aide est la bienvenue.

Merci bien

[message édité le 29-04-2009 @ 18:06 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
ju
Master
Membre # 14333

 Avatar du membre
Lieu : Belgique / France

Messages :
911 (0.19 par jour)


Score :

Message du 29-04-2009 @ 19:28   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Si tu dois utiliser tes variables dans le code principale tu dois créer de l'espace mémoire pour tes lignes avec un malloc.

Ensuite (si tu ne connais pas le nombre de variables-lignes à renvoyer au code principal) tu dois faire une structure dynamic genre une liste chainée qui contiendra :

- un pointeur vers le malloc cré qui contient ta ligne
- un pointeur vers la cellule suivante qui contient la cellule suivante

Pour le code j'avais fait qqs chose de pas très éloigné y'a déjà un moment, je peux essayé de retrouver ça au soir si besoin.

[message édité le 29-04-2009 @ 19:29 Par ju]
----------
IBM ThinkPad R61
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 29-04-2009 @ 19:42   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci bien ju pour ces compléments d'infos et pour cette réponse rapide. J'ai deux variables-lignes à renvoyer.

Ma première ligne est défini sur 4 octets.
La deuxième est un entier entre 1 et 1000.

Je veux bien du code si ce n'est pas trop une contrainte.

J'ai utilisé ce bout de code en utilisant la fonction scanf qui fonctionne et qui remplit mon besoin mais je ne sais pas si c'est optimal.

Code :


void lecture_fichier()
{
   char *name = "toto.txt";   
   char valeur1[4];
   char valeur2[BUFSIZ];
   FILE *file;
   
   if ((file = fopen ( name, "r" )) == NULL)
   perror ("Impossible d'ouvrir le fichier.");
   else
   {
      while ( fscanf ( file, "%s %s", valeur1, valeur2 ) == 2)
      printf("%s\n%s\n", valeur1, valeur2);
   fclose ( file );
   }
}


----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 29-04-2009 @ 20:39   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Le problème est dès que j'essaye de faire un test de comparaison entre valeur1 et un entier, j'ai ce message d'erreur :

attention : comparaison entre un pointeur et un entier
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
AlbertRaccoon
Vétéran
Membre # 3393

 Avatar du membre
Lieu : Evian / Lausanne

Messages :
10270 (1.83 par jour)




Message du 30-04-2009 @ 10:12   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

C'est normal : valeur1 est un pointeur sur un tableau de 4 caractères.
----------
Intel Core 2 Quad Q6600 avec Zalman CNPS9500LED, Asus P5Q, 4 Go DDR2-667 Kingston , Xpertvision 8800GTS 320 Mo, Hercules ProphetView 920 Pro, SoundBlaster Audigy 4, Seasonic S12 500W, Se7en Pro x64, Logitech diNovo, Logitech G5, LiveBox 2, Cowon X5 avec écouteurs Phonak 012, Alienware 17 R3 (i7-6700HQ, 16 Go, Geforce GTX 980M 8 Go), HTC 8x, Pentax K-7 | Pentax SMC DA 18-55mm f/3,5-5,6 AL | Sigma APO DG 70-300mm f/4-5,6 | Ma galerie
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.038 secondes