Afficher une ligne precise ds un fichier texte???????

Afficher une ligne precise ds un fichier texte??????? - Programmation

Marsh Posté le 30-03-2002 à 13:54:03    

Voilà, j'ai avec ce programme, j'ai creer un fichier agenda.txt
 
 
 
#include <stdio.h>
#include <io.h>
#include <string.h>
#include <stdlib.h>
struct{
 char nom[20];
 char prenom[20];
 int numero;
}fiche;
 
void saisie(void);
void affichage(void);
void affichage2(void);
FILE *f;
int nbpers=0;
 
 
void main(void){
 int choix;
 do{
  printf("Que desirez-vous faire ? \n" );
  printf("0-Quitter. \n" );
  printf("1-Saisie d'une personne dans l'agenda. \n" );
  printf("2-Afficher tout l'agenda. \n" );
  printf("3-Faire une recherche par nom. \n" );
  scanf("%d",&choix);
 
  switch(choix){
  case(1):saisie();break;
  case(2):affichage();break;
  case(3):affichage2();break;
 
  default:;
  }
 
 }while(choix!=0);
 
}
 
 
void saisie(){
 f=fopen("agenda.txt","a" );
 printf("Nom :\n" );
 scanf("%s",fiche.nom);
 printf("Prenom :\n" );
 scanf("%s",fiche.prenom);
 do{
  printf("Numero de telephone :\n" );
  scanf("%d",&fiche.numero);
 }while((fiche.numero<100000000)||(fiche.numero>=9
99999999));
 
 fprintf(f,"\n%s\n%s\n0%d",fiche.nom,fiche.pr
enom,fiche.numero);
 fclose(f);
 nbpers++;
 
}
 
 
void affichage(){
 
 f=fopen("agenda.txt","r" );
 while(fgetc(f)!=EOF){
   fscanf(f,"%s%s%d",&fiche.nom,&fiche.prenom,&fiche.numero);  
   printf("%20s\t%20s\tTel: 0%9d\n\n",fiche.nom,fiche.prenom,fiche.numero);
   
 }
 
 
 
 fclose(f);
}
void affichage2(){
 char *nom;
 printf("rentrez votre nom :\t" );
 scanf("%s",nom);
 
 f=fopen("agenda.txt","r" );
 while(fgetc(f)!=EOF){
  if(strcmp(nom,(char)fscanf(f,"%s",&fiche.nom))!=0)
   ;
  else
   fscanf(f,"%s%s%d",&fiche.nom,&fiche.prenom,&fiche.numero);  
   printf("%s\t%s\t0%d\n",fiche.nom,fiche.prenom,fiche.numero);
   
 }
 
 
 
 fclose(f);
}
 
 
 
 
Voilà, ma fonction affichage fonctionne tres bien et elle permet d'afficher tout le contenu du fichier texte. Maintenant, je cherche à faire une recherche de chaine de caractère, pour par exemple rechercher un nom et juste apres afficher le numero de tel de la personne. Pr cela, il faut trouver la chaine de caractere recherche, trouver le numero de ligne sur laquelle elle se trouve et il ne restera plus qu'a afficher le numer ode telephonne situé 2 ligne plus bas.
 
voilà le fichier tel qu'il est créer:
"
Bernard
nicolas
0268596854
Lambert
robert
0296325478
"
Merci à ce qui peuvent m'aider à faire marcher ;) ma fonction affichage2 qui pr lem oment ne marche pas ;(

Reply

Marsh Posté le 30-03-2002 à 13:54:03   

Reply

Marsh Posté le 30-03-2002 à 13:58:21    

ouah un agenda en mode texte  :eek2:

Reply

Marsh Posté le 30-03-2002 à 14:07:53    

taurais du organiser ton fichier avec des delimiteurs exemple
 
Bernard:Jacques:0612105141
 
la lecture est facilité comme ca
mais bon en mode texte c vrai que c pas super
j'en ai fait un en php/mysql c tres facile
 
mais bon c largement faisaible en C++

 

[jfdsdjhfuetppo]--Message édité par massanu--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 30-03-2002 à 14:22:19    

je peux changer c pas un probleme. Comment faudrait que je fasse ? svp, help!

Reply

Marsh Posté le 30-03-2002 à 14:41:41    

Pourquoi pas un agenda en XML ?

Reply

Marsh Posté le 30-03-2002 à 17:50:16    

ben parce qu'on me demande de faire comme ça ;)
c pr un tp d'info!

Reply

Marsh Posté le 30-03-2002 à 17:51:35    

tien moi aussi g un agenda a faire en tp d'info...mais en pascal, c beaucoup utile :D


---------------
L'invariance de l'univers lorsqu'on change de referentiel...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed