[c] compter le nombre de char d'un fichier

compter le nombre de char d'un fichier [c] - Programmation

Marsh Posté le 18-11-2001 à 18:36:17    

voila comment g code la fonction pour savoir le nbre de char qu'un fichier a, j'aimerais savoir s'il existe pas un fonction deja tte prete, car en faite elle fais partie d'un gros truc et elle marche pas a ts les coup ?! (prtt elle me parait bonne)
 
int nbchar(char * fichier)
{
  FILE * entree;
  char i;
  int temp;
 
  entree = fopen(fichier);
  while (!feof(entree))
    {
      fread($i,sizeof(char), 1, entree);
      temp++;
    }  
  fclose(entree);
  return(temp);
}


---------------
email : otb82@hotmail.com
Reply

Marsh Posté le 18-11-2001 à 18:36:17   

Reply

Marsh Posté le 18-11-2001 à 18:41:47    

vous aurez corrige de vous meme  
fopen(fichier);
par fopen(fichier, "r" );


---------------
email : otb82@hotmail.com
Reply

Marsh Posté le 18-11-2001 à 18:43:09    

$i :??:

Reply

Marsh Posté le 18-11-2001 à 18:50:21    

TheJackal a écrit a écrit :

$i :??:  




$i = &i bien entendu ... encore un ripage de doight sur le clavier :)


---------------
email : otb82@hotmail.com
Reply

Marsh Posté le 18-11-2001 à 19:08:07    

Qu'est-ce qui ne marche pas au juste ?
Les fichiers de plus de 64Ko par hasard ?

Reply

Marsh Posté le 18-11-2001 à 19:10:53    

Fork a écrit a écrit :

Qu'est-ce qui ne marche pas au juste ?
Les fichiers de plus de 64Ko par hasard ?  




 
c ce que je me demande ...
non c des petit fichier ... html de merde ...
en fait des fois le entree = fopen(fichier,"r" )
retourne null donc ca fais planter le reste de mon mini proj  
et je sais aps prkoi ... le fichier existe et a bien les droit en lecture ....
je peux pas me gourer dans le nom du fichier puisque c une fonction qui extrait les nom des fichier a partir d'un repertoire ...


---------------
email : otb82@hotmail.com
Reply

Marsh Posté le 18-11-2001 à 19:17:24    

je te propose l'artillerie lourde pour découvrir l'origine du bug :
 
int nbchar(char * fichier)
{
 FILE * entree;
 char i;
 int temp;
 
 entree = fopen(fichier);
 
 if(entree==NULL)
 {
    printf("Erreur ouverture du fichier '%s'\n",fichier);
    exit(0);
 }
 
 while (!feof(entree))
   {
     fread(&i,sizeof(char), 1, entree);
     temp++;
     if(temp<=0)
     {
        printf("Dépassement des capacités de la variable temp. Il faut changer de type.\n" );
        exit(0);
     }
   }  
 fclose(entree);
 return(temp);
}

Reply

Marsh Posté le 18-11-2001 à 19:34:57    

c le entree est a null
prtant le fichier existe et a les droits en lecture ...


---------------
email : otb82@hotmail.com
Reply

Marsh Posté le 18-11-2001 à 19:36:50    

otb82 a écrit a écrit :

c le entree est a null
prtant le fichier existe et a les droits en lecture ...  



soit précis.
 
* quel est le chemin absolu du fichier ?
* que vaut fichier lorsque tu le passes à ta fonction ?

Reply

Marsh Posté le 18-11-2001 à 19:39:45    

ah oui la question de la fonction pour la longueur du fichier ... :D
 
* utiliser fseek() pour positionner le pointeur de fichier comme relatif à la fin du fichier.
* puis appeler fgetpos() pour chopper la position du pointeur de fichier, donc la taille du fichier.  
 
ça c'est pour la lib standard. y'a des fonctions win32 qui font ça toutes seules (plus les noms en tête).

Reply

Marsh Posté le 18-11-2001 à 19:39:45   

Reply

Marsh Posté le 18-11-2001 à 19:48:57    

tiens,
 
tu ouvres ton fichier avec des handle et tu fais  
 
long file_length(int hand)
{
 long ret,sauv;
 
 sauv = lseek(hand,0L,SEEK_CUR);
 ret  = lseek(hand,0L,SEEK_END);
 lseek(hand,sauv,SEEK_SET);
 return(ret);
}

Reply

Sujets relatifs:

Leave a Replay

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