[C++] Couper un mot

Résolu/Fermé
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 - 21 août 2008 à 14:09
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 - 21 août 2008 à 14:48
Bonjour,


me revoila avec mes problemes de code !

cette fois je veux faire l'inverse !

j'ai donc fait une variable comme avant:

sprintf (nomsortie,"%s%s",nomentree,cod);


je me retrouve donc avec nomsortie="nomentreecod".

dans un autre programme qui récupère le nom dans une variable nomentree, je voudrais retrouver son nom d'origine.


c'est a dire partir de nomentreecod, arriver a nomentree.

Comment fait t'on pour soit soustraitre 3 caractere a une string, ou pour lui oter une autre string ?

5 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
21 août 2008 à 14:44
Ah mais oui mais là tu fais du vilain, tu tapes dans la mémoire qui n'est pas à toi.


nomentree[ strlen( nomentree) - strlen( cod ) + 1 ] = '\0'; 


M.
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
21 août 2008 à 14:16
Re

Si c'est juste pour couper violemment :

nomsortie[ strlen( nomsortie ) - strlen( cod ) + 1 ] = '\0';


(A vérifier le +1, j'oublie toujours ^^)

Ceci dit c'est du C et non du C++, acceptable quand même ?

M.
-2
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
21 août 2008 à 14:23
je vais essayer et je reviens te dire ce que ça a donné
-2
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
21 août 2008 à 14:31
non, ça ne marche malheuresmeent pas:


#include <stdio.h>
#include <string.h>


main()
{

char nomentree[20]="TRUC.doccod";
char nomsortie[30]="000";
char cod[4]="cod";
int size_t=0;

nomsortie[ strlen( nomentree ) - strlen( cod ) + 1 ] = '\0';

printf ("%s",nomsortie);

system("pause");
}

et le programme m'affiche 000...

une autre idee ?
-2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 278
21 août 2008 à 14:48
bon, ben j'ai toruvé une autre solution ! (CCM me fait trouver mes solutions tout seul mdr.


char nomentree[20]="TRUC.doccod";
char nomsortie[30]="000";
char cod[4]="cod";
int size_t=0;

size_t=strlen (nomentree);

strncpy(nomsortie,nomentree,(size_t-3));

printf("%s",nomsortie);

voila, j'ai donc soustrait 3 caractère a nomentree, et je l'ai mis dans nom sortie. C'est plus long, mais ça fonctionne

merci a toi !
-2