Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Comment tester le dernier caractère d'un fichier (suite de hier)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment tester le dernier caractère d'un fichier (suite de hier)

n°311581
spydurmen
Posté le 17-02-2003 à 21:30:52  profilanswer
 

Bon, me revla!
encore merci à Taz++ pour ses conseils et exemples.
Now g fai ma sauce et j'arrive à sauter els blancs d'une autre façon Taz en mettan %7s[^\n\t\b]
 
Sinon vu k'hier je lisais des blocs de 7 caractrèes séparés par un virgule
et ke je mettais les dans une chaine  
COMMENT faire pour tester si le dernier caractère est une vorgule
Car si c'est une virgule le test doit être faux or ca n'est pas le cas.

mood
Publicité
Posté le 17-02-2003 à 21:30:52  profilanswer
 

n°311583
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-02-2003 à 21:32:49  profilanswer
 

Spydurmen a écrit :

Bon, me revla!
encore merci à Taz++ pour ses conseils et exemples.
Now g fai ma sauce et j'arrive à sauter els blancs d'une autre façon Taz en mettan %7s[^\n\t\b]


:non:
c'est ++Taz, et estime toi heureux, ça pourrait être *Taz[] !


---------------
J'ai un string dans l'array (Paris Hilton)
n°311584
spydurmen
Posté le 17-02-2003 à 21:34:02  profilanswer
 

ok alors ++Taz ;)
 
Bon etpour mon probleme
y a t il un moyen de ne pas tout reparcourir

n°311586
Taz
bisounours-codeur
Posté le 17-02-2003 à 21:39:29  profilanswer
 

si tu stockes la virgule alors que tu n'en n'a pas besoin, c'est peut etre un problème. tout le problème étant la synthaxe exact de tes données: ou sont les espaces, etc
 
size_t strlen(const char *)
renvoie le nombre de caractères d'une chaine de ccaractere terminée par un 0 (non compté) (strlen("abc" ) == 3)
 
détant donnée que les indices vont de 0 à strlen()-1...
 

Code :
  1. if(chaine[strlen(chaine)-1]== ',')
  2. {
  3.   // faire semblant de travailler
  4. }


 
si tu dois te servir plusieurs fois du resultat de strlen() sur la meme chaine, stocke dans une variable la taille. si tu veux te débarasser de ta vigule finale tu fais  
 

Code :
  1. size_t chaine_len=strlen(chaine);
  2. if(chaine[chaine_len-1]== ',')
  3. {
  4.   chaine[chaine_len-1]='\0';
  5. }


Message édité par Taz le 17-02-2003 à 22:09:34
n°311601
spydurmen
Posté le 17-02-2003 à 21:53:28  profilanswer
 

le truc c ke je fai des fscanf et pa des getc
 
Donc étant doné ke ma lecture se fait comme ça :
"%7[^,\b\t\r\f\v\n ],"
La virgule est ignorée
 
Sui-je obligé de reparcourir le fichier du début?


Message édité par spydurmen le 17-02-2003 à 21:53:59
n°311613
Taz
bisounours-codeur
Posté le 17-02-2003 à 22:03:35  profilanswer
 

non si ton fichier le permet (sans doute) tu peux le parcourir aléatoirement
 
le problème c'est de savoir si y a des espaces ou pas. par ce que les [] représente des chaines non-vides, donc faire un [^\t\n][\t\n]ne va pas fonctionner comme un regex * (0 à n)
 
la solution ç coup de fgetc que je t'ai donné est certes simple, mais elle fonctionne parfaitement. ne te soucie des performances, fait marcher ton programme. il n'est pas interdit de mélanger les fgetc et fscanf

n°311615
spydurmen
Posté le 17-02-2003 à 22:05:54  profilanswer
 

merci

n°311653
spydurmen
Posté le 17-02-2003 à 22:56:27  profilanswer
 

Code :
  1. int virguleFin(FILE *fp)
  2.   {
  3.    int c;
  4.  
  5.    if( fseek(fp, -1, SEEK_END) == 0){
  6.     if( (c=fgetc(fp)) == ',' )puts("Virgule détectée" );
  7.     }
  8.       return 0;
  9.   }


 
VOilà la solution ke j'ai trouvé


Message édité par spydurmen le 17-02-2003 à 22:57:31
n°311661
Taz
bisounours-codeur
Posté le 17-02-2003 à 23:03:21  profilanswer
 

effectivement ça dira bien si le dernier caractère de ton fichier du fichier est un ','
 
enfin ta fonction est bancale, c ne sert à rien et ta fonction de renverra que 0 ou n(importe quoi... d'ailleurs ton compilo devrait te balancer des warning plein la tete


Message édité par Taz le 17-02-2003 à 23:04:38
n°311686
spydurmen
Posté le 17-02-2003 à 23:39:18  profilanswer
 

Code :
  1. short virguleFin(FILE *fp)
  2.   {
  3.    int c;
  4.  
  5.    if( fseek(fp, -1, SEEK_END) == 0){
  6.     c=fgetc(fp);
  7.     if( c == ',' ) return 1;
  8.     }
  9.       return 0;
  10. }


 
version finale : g remplacé l'affichage par un return 1 si on trouv une virgule
PLus de warning

mood
Publicité
Posté le 17-02-2003 à 23:39:18  profilanswer
 

n°311738
Taz
bisounours-codeur
Posté le 18-02-2003 à 05:42:16  profilanswer
 

ben y a toujours un cas ou ça renvoie rien


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Comment tester le dernier caractère d'un fichier (suite de hier)

 

Sujets relatifs
detecter une tabulation dans un fichier txtexecuter un fichier batch ligne par ligne
File.renameTo(File) et déplacement de fichierProblème de lecture formatée dans un fichier
IIS, fichier manquant sur mon cd win XP[PHP] récupérer l'icone d'un fichier
fichier batchTester le groupe d'util?
[c++] droit des fichierJavascript: écriture dans un fichier
Plus de sujets relatifs à : Comment tester le dernier caractère d'un fichier (suite de hier)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR