Chaine de caractère en paramètre dans une fonction

cs_ph87 Messages postés 2 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 7 novembre 2008 - 6 nov. 2008 à 17:47
cs_ph87 Messages postés 2 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 7 novembre 2008 - 7 nov. 2008 à 00:10
bonjour à tous,

j'ai un petit problème pour faire un programme en C, je suis perdu dans les pointeurs :)

voila ce que je veux faire :
   je veux qu'une fonction que j'ai faite preine en paramètre une chaine de caractère et qu'elle la traite

exemple de ce que je veux faire, c pas exactement ça mais c'est les pointeurs qui ne vont pas je pense :
   
   void fonction(char *text){
      printf(*text);
   }

   void main(){
      char *text;
      *text = "at+cnmi=1,1";
      fonction(*text);
   }

il faudrait que printf envoie "at+cnmi=1,1"

est-ce que vous pouvez me dire ce qui cloche?
merci d'avance
ph87

      


 

2 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
6 nov. 2008 à 19:25
Salut,

Plusieurs choses ne vont pas dans ton programme.
Ta variable text est un pointeur, tu ne peux pas l'utiliser de la sorte. Le seul moement ou tu peux faire une affectation avec une chaîne est à la déclaration du pointeur
char *text="toto"; //OK
char *text; text = "toto"; //NOK

Pour faire avec ta méthode:
char *text; text=malloc(100); strcpy(text, "toto"); .... free(text);

Deuxième point: printf prend en paramètre une chaine de caractères. Lorsque tu fais printf(*text) dans ta fonction, tu lui passes un cractère en paramètre.
Il faut que tu fasses printf(text); text est un pointeur sur ta chaîne.

Pour reprendre ton morceau de code:

void fonction(char *txt)
{printf(txt);}

int main(void)
{
char *text="Bonjour\n";
fonction(text);
return 0;
}

--Vive le CSavon
0
cs_ph87 Messages postés 2 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 7 novembre 2008
7 nov. 2008 à 00:10
merci beaucoup pour ton aide et tes explications, elles vont être mises en première page de mon cours, c'est beaucoup mieux expliqué :)
merci encore

ph87
0
Rejoignez-nous