fonction qui renvoie les 4 derniers caractères en vc++ ? - C++ - Programmation
Marsh Posté le 21-11-2006 à 16:30:38
Tu enlèves tout ces char* qui n'ont rien à faire là, tu fais un objet pour ça, tu utilises CString et les méthodes Left ou Right de cette classe.
Marsh Posté le 21-11-2006 à 16:45:45
ReplyMarsh Posté le 21-11-2006 à 17:45:47
Scan arrière, pour trouver l'extension finale comme dans "la.notation.hongroise.doit.mourir"
Code :
|
Evidement strlen part dans les choux si l'argument n'est pas une chaine bien formée.
edit: Crotte. Marche pas avec '..'
Il est fortement conseillé de ne pas se lancer dans les manips de chaines, sauf à fins didactiques, avec la bibiothèque C standard. C'est vraiment casse gueule.
Marsh Posté le 21-11-2006 à 18:37:20
Code :
|
Marsh Posté le 21-11-2006 à 20:55:52
Oui, mais non; std::strrchr(0, '.'), c'est verbotten.
L'auteur initial n'utilisait que strlen, si on pouvait éviter de lui montrer comment faire un coredump en moins de 3 lignes avec strtok et compagnie ça serait un plus, nan?
Code :
|
edit: Cette ligne est tout aussi foireuse, heh.
Marsh Posté le 21-11-2006 à 21:01:20
tbp a écrit : Oui, mais non; std::strrchr(0, '.'), c'est verbotten.
|
+1
Marsh Posté le 22-11-2006 à 08:25:05
Ton erreur est ici
Code :
|
FileExt est un pointeur non initialisé. D'ailleurs ton compilo aurait du râler ici : char* FileExt ='\0';
FileExt[i_cnt] pointe dans le décor, ça peut fonctionner comme ça peut planter.
Marsh Posté le 22-11-2006 à 09:38:22
Merci bien, j´ai pu m´inspirer de vos multiples réponses pour faire ceci et ca marche nickel.
Code :
|
cool ou bien ?
je vous remercie
Marsh Posté le 22-11-2006 à 09:47:17
alino a écrit : Merci bien, j´ai pu m´inspirer de vos multiples réponses pour faire ceci et ca marche nickel.
|
Oui, c'est déjà beaucoup mieux
Marsh Posté le 22-11-2006 à 09:54:55
Que se passe-t-il quand FileName.length() < 4?
Tout ce qui rentre dans un programme est contaminé.
Marsh Posté le 22-11-2006 à 10:21:30
ben naya, je suis déja sur et certains que c´est superieux car je recois le chemin ou se trouve les données et au minimun c:\share\filename.txt
et moi c extension si m´interesse pour faire
Code :
|
c tout.
Marsh Posté le 22-11-2006 à 10:25:32
Du moment que vous vous êtes posé la question, c'est RAS dans le talveg.
Marsh Posté le 22-11-2006 à 11:56:18
Et si t'as un fichier dont l'extension fait plus de 3 lettres? (html par exemple, ou quelques autres variantes du type jpeg)
Marsh Posté le 22-11-2006 à 13:28:31
heu....
Si tu te bases sur l'extension, il me semble qu'il suffit de prendre tout ce qu'il y a après le dernier point (.) dans le nom complet d'acces au fichier, non ?
(utiliser rfind et substr je pense)
Marsh Posté le 22-11-2006 à 13:41:02
Encore plus drôle que les extentions de plus de 4 caractères, les blablah.tar.bz2 , qui ont un mimetype spécifique et différent des blablah.bz2
Marsh Posté le 22-11-2006 à 14:41:08
alino a écrit : correct là ca devient chaud ?? |
En même temps le problème a été évoqué 10 posts plus haut. Faudrait voir à percuter.
Marsh Posté le 22-11-2006 à 17:18:29
blablah.tar.bz2 ca c est pour moi un cas extrême !! il n´arrivera pas de toutes les facons car c est trop spécifique mais celui ci pourra bien arriver
.html ou . js ou .mpeg
Marsh Posté le 21-11-2006 à 16:28:31
Salut à tous
j´essaye d´ecrire une fonction qui copie les 4 derrnies charactères d´une string et me les renvois,
mais car ne fonctionne pas dut tout, voici mon code.
Quelqu´un saurait peut être ou je fais ma betise ???
Merci bien !!