Langage C - Afficher une ligne de fichier txt - Programmation
Dans la même thématique :
Ceci répond-il à votre question ? Oui | Non
 

Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Langage C - Afficher une ligne de fichier txt
 
Profil : IDNaute
Plus d'informations

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

Profil : IDNaute
Plus d'informations

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 ?

Paranoid Android
Profil : IDNaute
Plus d'informations

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"
Graph | H&L | Sex
Profil : QuasiModo
Plus d'informations

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
Profil : IDNaute
Plus d'informations

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 :( ?

BigDefender
Profil : IDNaute
Plus d'informations

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 ...


---------------
Linux-Reloaded, Aventures Linuxiennes
france/nlle-zélande
Paranoid Android
Profil : IDNaute
Plus d'informations

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"
Profil : IDNaute
Plus d'informations

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
Paranoid Android
Profil : IDNaute
Plus d'informations

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"
Graph | H&L | Sex
Profil : QuasiModo
Plus d'informations

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
Profil : IDNaute
Plus d'informations

ok merci. je vais essayer de comprendre !


Aller à :
Ajouter une réponse
  FORUM Infos-du-Net » Programmation » Langage C - Afficher une ligne de fichier txt
 

Liens