Probleme re-initialisation d'une chaine - C - Programmation
Marsh Posté le 31-12-2007 à 09:26:22
Utilise plutôt strchr() pour faire la recherche de ton caractère '.', ça t'évitera cette tambouille.
Ensuite, tu devrais contrôler la taille de ce que tu insères dans temp.
Lorsque tu y entres "gaoland", tu dépasses de 3 caractères la taille du buffer, ce qui provoque des débordements mémoires => comportement aléatoire.
Enfin, tu ne termines ta chaîne avec '\0' que si tu trouves un '.'.
Or, il faut également terminer "temp" lorsque tu as terminé la lecture en trouvant un espace.
Donc, déroulement de ton programme (je passe les premières lectures) :
- tu trouves le '.' de ".gaoland"
- tu stockes "gaoland\0" dans temp (avec débordement mémoire, donc)
- tu trouves le '.' de ".net"
- tu stockes "net" dans la chaîne temp qui contenait "gaoland\0" => temp == "netland\0"
Marsh Posté le 31-12-2007 à 12:45:59
Elmoricq a écrit : Utilise plutôt strchr() pour faire la recherche de ton caractère '.', ça t'évitera cette tambouille. |
ou plutôt strrchr(), puisqu'il s'agit de trouver le dernier '.'...
Marsh Posté le 31-12-2007 à 14:06:40
En fait j'ai l'impression que le nombre de '.' dans le message informatif peut être variable, alors que celui de la chaîne d'en-tête est fixe.
Donc je ne pense pas que strrchr() soit une bonne idée, sauf à employer d'abord strchr() pour trouver le premier espace, puis strrchr() pour trouver le dernier point précédent cet espace.
Marsh Posté le 31-12-2007 à 14:56:44
Exact, il fallait mettre temp[j] = '\0'; après qu'il ait trouvé ' '.
Merci à vous!!!
Pour ce qui est de strchr(), je verrais sa à la fin pour le simplifier, pour l'instant je garde mes premiers objectifs.
Marsh Posté le 05-01-2008 à 00:51:05
Re-Salut!!!
J'ai un autre soucis maintenant avec des pointeurs vers un tableau de structures.
Code :
|
Le compilateur m'indique un Warning en me disant que les pointeurs (en rouge) sont incompatibles. Et même lorsqu'il compile le programme plante.
J'ai beau me creuser la tête, je n'arrive pas à savoir pourquoi c'est faux!?!
Merci à vous!
Marsh Posté le 05-01-2008 à 01:33:56
Hmm, révise tes bases du C, particulièrement la section tableau. &liste pour un tableau n'a aucun sens, vu que liste est un déjà un pointeur (constant).
Qui plus est, lorsque tu écris "extension * liste[]" dans un prototype (et uniquement dans un prototype), c'est strictement équivalent à "extension ** liste".
Marsh Posté le 05-01-2008 à 01:36:59
KspR92 a écrit :
|
Faut pas peindre le code... après on passe des heures à gratter la peinture...
Par contre, il serait beaucoup plus utile de poster du code compilable...
|
Ce code
Code :
|
est incomplet
|
Marsh Posté le 31-12-2007 à 00:51:46
Salut à tous
Voila mon problème, je dispose d'un fichier texte de ce type duquelle je dois extraire l'extension repéré en rouge :
335.946.10-56.gar.gaoland.net - - [05/Dec/2005:02:46:52 +0310] 400 2 "http://128.752.489.732:47081/bool.xml" "FearFactor Croowling"
Pour cela, j'ai écrit ce programme :
Mais qui me donne cela une fois executé :
netland
Je suppose que sa doit venir de la ligne 15, mais je me suis retourné la tête que je ne vois toujours pas l'erreur.
Merci à vous!!!
Edit : Mouarf, sa passe pas les commentaires, je les retireraient demain matin pour la lisibilité.
Message édité par KspR92 le 31-12-2007 à 12:56:52
---------------
My FeedBack