Petit problême de chaine

Résolu
Cphil51 Messages postés 87 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 24 septembre 2007 - 16 août 2006 à 10:29
Cphil51 Messages postés 87 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 24 septembre 2007 - 16 août 2006 à 10:38
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
16 août 2006 à 10:33
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
3
Cphil51 Messages postés 87 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 24 septembre 2007
16 août 2006 à 10:38
Merci beaucoup !! Ca marche impec'
0
Rejoignez-nous