Tom's Guide > Forum > Programmation > Langage C - Afficher une ligne de fichier txt

Langage C - Afficher une ligne de fichier txt

Forum Programmation : Langage C - Afficher une ligne de fichier txt

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

Je programme en C sous dev C++.

Jai un fichier fichiertournee.txt dont chaque ligne est ainsi faite :
un nombre entier suivi d'une tabulation puis d'une série de caracteres, d'espaces, de tabulations, de nombres dans le désordre et enfin un saut de ligne.
J'aimerai que l'utilisateur rentre un nombre, que le programme lise le fichier, reconnaisse le nombre voulu et affiche uniquement le reste de la ligne en question jusqu'au saut de ligne.

Je suis bloqué depuis longtemps dessus alors si vous pouviez me dépanner ça serait sympa !


Message édité par Scolphi le 15-04-2008 à 10:20:06
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

123 Ville 1 : Rouen Ville 2 : Verin

Voici au hasard une ligne du fichier.
Pouriez vous me montrer comment, lorque l'on rentre le nombre 123, afficher "Ville 1 : Rouen Ville 2 : Verin" svp ?

Répondre à Scolphi

utilise les fonctions suivantes :

fopen : ouverture du fichier
fscanf : lecture du fichier suivant une expression régulière

google > man fonction : donne les prototypes des fonctions

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Tu ne cherches que sur le tout premier nombre ?

Tu veux du C pure ou du C++ ?

------------------------------ N'oubliez pas le [Résolu] dans le titre si vous êtes satisfait.
Les règles du Forum - À lire absolument
Répondre à RedTux

Je ne cherches que sur le premier nombre oui.
Je veut dur C pur svp.
Je ne peut pas utiliser fscanf car l'expression après le premier nombre n'est pas régulière.
Comment faire :( ?

Répondre à Scolphi

tu fais une fonction f qui lit le 1er mot d'une ligne
et une fonction g qui mets dans un buffer le reste d'une ligne
tu compares ce que l'utilisateur entre avec chaque premier mot de ligne, dès que tu as ce mot tu appelles la fonction g.
teste les fonctions séparément ...

Répondre à Anonyme

un peu que c'est une regexp...

 

essaie :

Code :
  1. int *id;
  2. char *ville1, *ville2, *ville3;
  3. fscanf(file, "%d\t%s:%s:%s\n", id, ville1, ville2, ville3);
  4. tu devrais récupérer dans les différentes variables les bonnes données.


Message édité par Vinz42 le 15-04-2008 à 11:46:07
------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Non je ne peut pas mettre ton code Vinz42 car parfois , apres le nombre, il y a autant de ville que l'on veut. Parfois 1, 2 ou 3 ou 10, etc...


Message édité par Scolphi le 15-04-2008 à 11:58:29
Répondre à Scolphi

ps : attention, sous windows, le retour à la ligne est \r\n (ou l'inverse, je ne sais jamais).

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char** argv) {
  4.     if(argc != 3){
  5.         fprintf(stderr,"\nUtilisation du programme : %s fichier numero\n", argv[0]);
  6.         return EXIT_FAILURE;
  7.     }
  8.     int numero = atoi( argv[2] );
  9.     char ligne[256];
  10.     FILE *f = fopen( argv[1], "rt" );
  11.     if (f==NULL) {
  12.         fprintf(stderr,"\nerreur ouverture du fichier %s\n", argv[1]);
  13.         return EXIT_FAILURE;
  14.     }
  15.     while (fgets( ligne, 256, f ) != NULL) {
  16.         int numero2 = 0;
  17.         int length=0;
  18.         while ( length<256 && ligne[length]!= ' ' && ligne[length]!= '\t' ) length++;
  19.         if(length == 256) continue;
  20.         char num[length];
  21.         int i;
  22.         for(i=0; i<length; i++) num[i] = ligne[i];
  23.         numero2 = atoi(num);
  24.         if(numero == numero2) printf("%s\n", ligne);
  25.     }
  26.     fclose(f);
  27.     return EXIT_SUCCESS;
  28. }
 

un ptit truc vite fait pendant ma pose de bouffe ...


Message édité par RedTux le 15-04-2008 à 13:38:12
------------------------------ N'oubliez pas le [Résolu] dans le titre si vous êtes satisfait.
Les règles du Forum - À lire absolument
Répondre à RedTux

ok merci. je vais essayer de comprendre !

Répondre à Scolphi
Tom's Guide > Forum > Programmation > Langage C - Afficher une ligne de fichier txt
Aller à :

Il y a 2526 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens