Petit problême de chaine

Résolu
Signaler
Messages postés
87
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2007
-
Messages postés
87
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2007
-
Je débute en C++ et j'ai un petit problême avec mon code. J'ai créé une fonction qui prend en argument une chaine et un entier et qui retourne les n premiers caractères de la chaine entrée.

char *str_left(char *i_str, int i_len)
{
    if(i_len > strlen(i_str)) return NULL;

    char *r_str = new char[i_len];
    int pos = 0;
    do
    {
        r_str[pos] = i_str[pos];
        pos++;
    }while(pos < i_len);
    return r_str;
}

par exemple :

char *commentaire = str_left("/* commentaire */", 2);
std::cout << commentaire << std::endl;
delete commentaire;

Ce code devrais me renvoyer "/*" a l'écran mais au lieu de cela, il me renvoi "/*=" !!
Pourquoi s.v.p. aidez moi!!

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
char *str_left(char *i_str, int i_len)
{
    if(i_len > strlen(i_str)) return NULL;

    char *r_str = new char[i_len];
    int pos = 0;
    do
    {
        r_str[pos] = i_str[pos];
        pos++;
    }while(pos < i_len);
    r_str[pos] = 0;
    return r_str;
}

char *commentaire = str_left("/* commentaire */", 2);
std::cout << commentaire << std::endl;
delete[] commentaire;

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
87
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2007

Merci beaucoup !! Ca marche impec'