erreur bête [C] - Programmation
Marsh Posté le 28-07-2003 à 11:18:15
avant meme de lire, man strtok.
edit: ben ç t'oblige à mémoriser le résultat, puis faire ton printf, puis faire un free
edit1: pour ton problème. et bien dans ta boucle while de recopie, pense aussi à t'arreter si tu trouves un '\0' dans src. manque un <stdio.h> et un const pour faire faire const char *src
Marsh Posté le 28-07-2003 à 11:20:36
tu alloues de la memoire dans ta fonction get_token , et tu retournes ce pointeur.
Comme tu utilises cette fonction dans ton printf , tu perds l adresse de ton pointeur du coup tu ne peux pas le liberer.
Marsh Posté le 28-07-2003 à 11:29:05
En fait, ce que je voudrais faire c'est avancer dans buf à chaques mots récupérés. Exemple si je fais
Code :
|
Il m'affiche:
Code :
|
Marsh Posté le 28-07-2003 à 11:30:31
man strtok
dernière fois avant sanction (ça va je suis crédible là?)
Marsh Posté le 28-07-2003 à 11:31:32
Taz a écrit : man strtok |
Taz a écrit : |
Arréte après tu va avoir mauvaise réputation
Marsh Posté le 28-07-2003 à 11:32:38
LetoII a écrit : |
Il aime ça, c'est pas grave! (cf who's who)
Marsh Posté le 28-07-2003 à 11:36:01
Désolé pour strtok, le problème c'est que j'obtiens
Code :
|
pour
Code :
|
Autre chose, on ne peut spécifier le nombre de caractère que l'on veut ce qui m'embêtre vraiment.
PS: J'ai lu le man de strtok et cela ne devrait pas donner Test\nTest
Marsh Posté le 28-07-2003 à 11:38:31
Code :
|
Si mes souvenirs sont bons.
Marsh Posté le 28-07-2003 à 11:42:46
tes souvenirs sont bons
Citation : Example |
Marsh Posté le 28-07-2003 à 11:55:57
Rah, je suis un gros boulay, merci.
Et sinon pour limiter la taille, une idée ?
Marsh Posté le 28-07-2003 à 11:57:40
deviant a écrit : Rah, je suis un gros boulay, merci. |
Code :
|
Marsh Posté le 28-07-2003 à 13:49:29
deviant a écrit : Ca n'empêche pas un dépassement de la mémoire ça... |
Ben programme correctement et t'aura pas d'enuies
strtok s'arréte au premier \0 qu'elle trouve, si t'en met un à la fin de ton buffer elle poura pas dépasser.
Marsh Posté le 28-07-2003 à 13:58:23
C'est pas une question de coder proprement où pas (enfin si justment).
Prend cet exemple tout bête:
Code :
|
Il va y avoir un beau dépassement et vu que dans mon programme je ne contrôle pas le contenu de line.
A moins bien sûr que buf est la même taille que line et la il n'y a pas de problèmes...
Marsh Posté le 28-07-2003 à 14:03:28
Ah, je crois que je viens de comprendre, il s'arrête au premier \0 de buf donc la oui il ne peut pas dépasser.
Marsh Posté le 28-07-2003 à 14:08:14
C pas au niveau de strtok que tu doit faire gaffe au dépassement, mais avant.
Marsh Posté le 28-07-2003 à 14:10:43
peut etre que cette nuit les tableaux sont devenus des l-values qui sait
Marsh Posté le 28-07-2003 à 11:16:40
J'ai à moitié honte car je n'arrive pas à trouver le bug la dedans:
D'ailleur, je fais un malloc sans free dans get_token, je le mets où le free ?