Pointeurs et tableau de char ?

Résolu
phyyl Messages postés 15 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 17 juin 2013 - 18 nov. 2011 à 06:29
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 20 nov. 2011 à 08:41
Bonjour ! J'ai un petit soucis ... voici mon code:
#include 

using namespace std;

void modify(char* ptr[]);

int main()
{
    char mot[]={'a','b','c','d','e','f'}; //j'initialise un tableau
    cout << mot << endl; //je l'affiche
    modify(mot); //je le modifie
    cout << mot << endl; //j'affiche le tableau apres la modifications
    return 0;
}

void modify(char* ptr[])
{
    //ici je veux modifier le tableau qui se trouve a l'adresse de mon pointeur "ptr"
}
 


Je veux, a l'aide d'un pointeur, modifier mon tableau qui est déclaré dans "main"... est-ce possible ?

Merci !

4 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
18 nov. 2011 à 08:56
Bonjour,
Pour ta fonction tu utilises un tableau de pointeurs de char alors qu'il ne faut qu'un pointeur de char:
modify(char* ptr)
Bon codage


louis
3
phyyl Messages postés 15 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 17 juin 2013
19 nov. 2011 à 06:58
Merci ! J'ai fait ceci :

void modify(char *ptr);

int main()
{
    char mot[]={'a','b','c','d','e','f'}; //j'initialise un tableau
    cout << mot << endl; //je l'affiche
    modify(mot); //je le modifie
    cout << mot << endl; //j'affiche le tableau apres la modifications
    return 0;
    return 0;
}

void modify(char *ptr)
{
    ptr[0]='f';
}


la sortie :

-abcdef
-fbcdef

Perfecto !
0
phyyl Messages postés 15 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 17 juin 2013
19 nov. 2011 à 07:00
Par contre, si je remplace ma fonction modify par ceci :
ptr="dsfhhf";


ca ne marche plus ! (le code s'execute mais la sortie est la meme avant et apres le changement ... :S
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 nov. 2011 à 08:41
Bonjour,

C'est tout à fait normal. ptr est juste un char* passé par valeur. Le faire pointer sur autre chose n'a aucune influence sur "mot" dans le main.

Suivant ce que tu veux faire, tu peux passer par strcpy, ou passer en paramètre un char**.
Cours sur les pointeurs.

Mais on dirait que tu fais du C++ (iostream), donc tu peux aussi passer par la classe string.
0
Rejoignez-nous