Comment tester le dernier caractère d'un fichier (suite de hier) - C++ - Programmation
Marsh Posté le 17-02-2003 à 21:32:49
Spydurmen a écrit : Bon, me revla! |
c'est ++Taz, et estime toi heureux, ça pourrait être *Taz[] !
Marsh Posté le 17-02-2003 à 21:34:02
ok alors ++Taz
Bon etpour mon probleme
y a t il un moyen de ne pas tout reparcourir
Marsh Posté le 17-02-2003 à 21:39:29
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 :
|
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 :
|
Marsh Posté le 17-02-2003 à 21:53:28
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?
Marsh Posté le 17-02-2003 à 22:03:35
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
Marsh Posté le 17-02-2003 à 22:56:27
Code :
|
VOilà la solution ke j'ai trouvé
Marsh Posté le 17-02-2003 à 23:03:21
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
Marsh Posté le 17-02-2003 à 23:39:18
Code :
|
version finale : g remplacé l'affichage par un return 1 si on trouv une virgule
PLus de warning
Marsh Posté le 17-02-2003 à 21:30:52
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.