[C++] Couper un mot

Résolu
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 ?
Configuration: Windows Vista
Safari 525.17

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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.
      1. je vais essayer et je reviens te dire ce que ça a donné
        1. 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 ?
          1. 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 !