Problème de lecture formatée dans un fichier - C++ - Programmation
Marsh Posté le 16-02-2003 à 18:56:48
En gros je voudrais récupérer un bloc dans une chaine en 1 seule instruction fscanf.
et ensuite je boulcerais juska feof
Marsh Posté le 16-02-2003 à 18:59:43
Je susi débutant...
s'il vous plait répondez, je susis sur ke vous savez tous faire ça!
Edit:J'ai finalement réussi à lier la chaîen en entier mais toujours pas bloc par bloc
Marsh Posté le 16-02-2003 à 19:04:04
Mais je suppose ke mon problème ne vien pas du feof.*
J'essaye jsute de lire un bloc de taille donnnée de chaine de caractère
Marsh Posté le 16-02-2003 à 19:07:20
J'ai réussi c bon, à force de courage
Voilà le code au cas où ca intéresse kkun:
Code :
|
Mon erreur de syntaxe était : j'oubliais de mettre & devant Test dans le printf, pensant que Test faisait référence automatiquement à l'adresse(ce ki est tres con de ma part)
Marsh Posté le 16-02-2003 à 19:12:05
ben t'a tous faux du debut jusqu'à la fin
-Test n'est pas alloué
- feof ne doit aps etre employé comme tu le fais, regarde le code de retour de scanf pour détecter la fin de fichier
Marsh Posté le 16-02-2003 à 19:14:13
allez essaye ça
Code :
|
Marsh Posté le 16-02-2003 à 19:15:22
++Taz a écrit : ben t'a tous faux du debut jusqu'à la fin |
Comment ça test n'est pas alloué? C'est le scanf qui l'alloue nan?
Et puis feof ca marche aps pourquio? parcke ca détecte des \n?
Merci du conseil
Marsh Posté le 16-02-2003 à 19:16:40
scanf("%7[^,],", bloc
je comprends pas cette ligne, peux-tu me l'expliquer svp?
Marsh Posté le 16-02-2003 à 19:18:44
Spydurmen a écrit : |
scanf alloue quedalle, il écrit la ou tu lui demandes, que ce soit alloué ou pas.
Marsh Posté le 16-02-2003 à 19:21:08
- nan fscanf fait pas ça
- pour savoir pourquoi feof marche aps, tuf ais une recherche, je l'ai dit 36000 fois
-
Citation : Variantes de capture de chaîne: |
fscanf renvoie le nombre d'éléments correctement convertit, 0 si rien n'a pu etre converti, ou EOF en cas de de fin de ficheir ou de problème. donc il faut tester soit EOF soit != nombre_truc_a_lire
Marsh Posté le 16-02-2003 à 19:26:46
Ptin je savais meme pa ke puts marhcahit en C
je croyais ke ct ke le C++
Marsh Posté le 16-02-2003 à 19:27:25
Spydurmen a écrit : Ptin je savais meme pa ke puts marhcahit en C |
puts c'est pas du C++. ni les char*
Marsh Posté le 16-02-2003 à 19:30:36
En gros mon erreur ct de croire ke en faisant char* je déclarait un tableau de char de la même facon ke si j'avais fait char [8] c ca?
Marsh Posté le 16-02-2003 à 19:45:44
nan en fait g compri pour les pojnteurs t'inkietes
en revnahce comment faire pour ne pas détecter les blancs c koi?
Marsh Posté le 16-02-2003 à 19:47:59
non je crois que t'as pas compris les pointeurs sinon tu ferais la différence entre un tableau et pointeur.
c'est quoi ton problème avec les blancs?
Marsh Posté le 16-02-2003 à 19:59:40
char* c un pointeur sur caractère, on peut l'utiliser pour gérer une chaine de caractère en considérant ke ca pointe sur le premierr caractère d chaine
c pas alloué dans la mémoire
char [8] ca réserve de la place pour un tableau de caractère
(je c ce ke c un pinteur )
Sinon j'aimerais pouvoir sauter la lecture si ya un blance
Marsh Posté le 16-02-2003 à 20:05:15
un char * pointe vers une zone mémoire correctement allouée!
ben la ou tu veux sauter des blancs, je vois pas trop comment le faire avec scanf, à moins que tu aies systématiquement au moins un blanc... alros je cherche
en tout cas tu peux faire un
Code :
|
tout ça à mettre dans une fonction
Marsh Posté le 16-02-2003 à 18:51:14
Bonjour à tous...
J'ai un fihcier composé d'un ligne unique et de cette forme:
E001(X),L004(Y),L004(Z),E002(X),...
J'aimerais savoir comment faire pour lire cette ligne en récupérant les blocs spérés par une virgule.
J'ai réussi à lire caractère par caractère, mais je en sais pas comment faire pour récupérer E001(X) dans une chaine.
Je n'ai pas réussi avec %s, mais la solution doit être là.
Merci d'avance