ligne d'un fichier aleatoire????

ligne d'un fichier aleatoire???? - C++ - Programmation

Marsh Posté le 09-03-2003 à 20:41:21    

slt  
je cherche a aller à une certaine ligne d'un fichier texte pour lire la ligne  
j'ai mis des numero a chaque ligne , je vais  a une ligne que je defini avant mais j'arrive pas a aller a une ligne aléatoirement . je voudrais aller a une ligne aléatoirement j'y arrive pas .

Code :
  1. #include<stdio.h>
  2.   #include<conio.h>
  3.  
  4.   void main(void)
  5.   {
  6.     char c;
  7.     char line[50];
  8.     FILE *fic;
  9.    
  10.     clrscr();
  11.     fic = fopen("tatu.txt","r" );//ouvrir le fichier  
  12.      if ( fic==NULL)
  13.      {printf("\n ouverture impossible!" );  //si il n'arrive pas a l'ouvrir  
  14.      }
  15.     do{
  16.       c=fgetc(fic);
  17.      
  18.      
  19.            if (c=='2')//si c='2' alors il affiche la ligne ou se trouve 2  
  20.             {
  21.               fscanf(fic,"%[^\n]",line);
  22.               printf("%s",line);
  23.               break;
  24.             }
  25.        }
  26.     while (c!=EOF)//il test tout les caracteres jusqu a la fin du fichier  
  27.    
  28.      getch();
  29.    
  30.     fclose(fic);
  31.   }


 
faire un truc comme ca:
 if (c=="x" ) avec x nombre aleatoire
quelqu'un peut m'aider?

Reply

Marsh Posté le 09-03-2003 à 20:41:21   

Reply

Marsh Posté le 09-03-2003 à 20:49:14    

#include <ctype.h>
 
 
tu as dedans entre autres
int isdigit(int c) qui renvoie 0 si c n'est pas un chiffre décimal
 
http://nodevice.com/cgi-bin/searchman?topic=isdigit
 
2 problèmes dans ton programmes: EOF ne rentre pas dans un "cahr", il faut donc employer un int "int c". le comportement est le meme, ce la ne change rien à ton programme, un char, c'est juste un petit int.
 
autre chose. si le fichier n'a pas pu etre ouvert, tu essayes quand meme de lire ( le message d'erreur est joli, mais le programme continu)
 
derniere chose, ta boucle est correct et l'utilisation de EOF fonctionnelle. peut etre serait il plus joli d'ecrire
 

Code :
  1. while((c=fgetc(fichier)) != EOF)
  2. {
  3.   /* faire semblant de travailler */
  4. }


 
edit ton fscanf est bizarre, je comprends que tu veux essayer de lire une ligne, bien essayer, mais si la ligne fait plus de 50 caractère, boooom
 
utilise fgets qui lit une ligne


Message édité par Taz le 09-03-2003 à 20:50:34
Reply

Sujets relatifs:

Leave a Replay

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