Problème avec STRTOK - C++ - Programmation
Marsh Posté le 21-01-2005 à 18:35:48
hum, il faut que tu tranches entre C et C++.
enleve les char*, strncpy, strtok, ...
pour strtok, il faut bien lire le man, c'est une fonction délicate, non réentrante.
En C++, on ne l'utilise pas.
une fois que tu as lu avec le getline, il faut tronçoner en mettant chaque token dans un vector par exemple. Pour ça, utilise std::copy avec istream_iterator<>,back_inserter.
[EDIT] sauf que l'intéret est sans doute d'obtenir les arguments à passer a exec*, dans ce cas, faut faire plus basique. Au risque de me faire taper dessus, c'est un des rares types de programme que j'aurais fait en C.
[\EDIT]
Dans un shell, il faut forker, exec* ne reviendra pas s'il réussi.
Marsh Posté le 21-01-2005 à 18:52:42
Tu peux trouver des sources de shell partout sur le net.
Va voir a cette page, tu auras plein d'adresses => http://packages.gentoo.org/package [...] app-shells
J'ai pas cherché pour ton pbm avec strtok, mais tu pourrais peut etre utiliser LEX/YACC (ou autre) pour parser les lignes de commandes.
Marsh Posté le 21-01-2005 à 20:43:49
Bonjour tout le monde (je suis nouveau sur le forum)
Bon c'est juste pour dire que strtok s'utilise comme ca lors du 1er appel :
strtok(buffer," " ) -> renvois un pointer sur la 1er chaine
puis par la suite :
strtok(NULL," " ) -> renvois un pointeur sur la chaine suivante
(il peut etre interresant de stocker les résultats intermédiaire aussi)
et un site où tout est expliqué :
http://www.cplusplus.com/ref/cstring/strtok.html
Bon après c'est sûr vaudrait mieux utiliser des string en C++
Marsh Posté le 21-01-2005 à 17:07:08
Bonjour,
je cherche à développer un shell Unix, et pour ce faire j'ai besoin de découper une chaine de caractère (la commande) grace à STRTOK. Le problème, c'est que si tout se passe bien à la compilation, le découpage ne marche absolument pas... Inexpliquable !
Je vous copie / colle le code ci dessous, si vous avez une idée, je suis preneur !
A ce sujet, si quelqu'un a déja programmé un shell unix perso, ce serait sympas de paratager les sources, histoire que ça me donne une petite idée