Empoisonné par "cannot convert parameter 1 from 'char *' to 'char'"

Résolu
thejojo1 Messages postés 13 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 28 août 2006 - 3 août 2005 à 17:33
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 3 août 2005 à 20:43
bonjour tout le monde. Ne rigolez pas surtout c'est pas évident de démarrer en c++ quand on a fait du delphi ou du vb.
Voila mon souci:
je voudrai afficher du texte dans un edit par la fonction
int Debog(char chaine[])
{
char buf[128] = {'\0'};
GetWindowText(hEdit,buf,128);
SetWindowTextA(hEdit,strcat(strcat(buf,chaine),"\r\n"));
return 0;
}

Quand je fais Debog("salut"); aucun problème.
Mais si je fais
char buffer="salut"; puis Debog(buffer); alors là c'est fini rien ne vas plus et je me retrouve avec l'erreur du titre "cannot convert parameter 1 from 'char *' to 'char'"
Un petit coup de main serait le bienvenu =)

13 réponses

meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007
3 août 2005 à 18:30
Salut,

Essaie de mettre un pointeur sur chaîne de caractère en tant qu'argument de fonction :
int Debog(char* chaine)
{
printf("chaine = %s\n", chaine);
// blah... blah... blah...
};


int main(int atgc, char** argv)
{
char salut[6] = "salut";
Debog(salut);
}

[exemple en ligne de commande].

Ciao.
3
cs_raton Messages postés 39 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 7 juillet 2006
3 août 2005 à 17:40
Essaie peut etre comme ca...

char buffer[6] = "salut";
Debog(buffer);

Si je ne me trompes pas ca devrait marcher....


<CENTER>Mess with the best
Die Like the rest</CENTER>
0
thejojo1 Messages postés 13 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 28 août 2006
3 août 2005 à 17:45
Nop a marche po ca donne "cannot convert from 'char [6]' to 'char' ".
Mais merci d'avoir répondu aussi vite =)
0
cs_raton Messages postés 39 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 7 juillet 2006
3 août 2005 à 17:50
Ok... et avec :

char buffer[6] = "salut";
char *tmp = buffer;

Debog(tmp);

?


<CENTER>Mess with the best
Die Like the rest</CENTER>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
3 août 2005 à 17:52
char --> caractère
char[n] --> tableau de n caractères.

Attention au strcat: si tu veux concaténer qqch à buf, il faut qu'il ait une taille suffisante...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
thejojo1 Messages postés 13 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 28 août 2006
3 août 2005 à 18:03
Et non raton, avec ta methode c'est retour aux sources ;)
error C2664: 'Debog' : cannot convert parameter 1 from 'char *' to 'char'
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
3 août 2005 à 18:37
void Debog(char *psz)

{

char Buff[256+1];

char Final[512];

GetWindowText(hEdit, Buff, sizeof(Buff));

wsprintf(Final, "%s %s", Buff, psz);

SetWindowText(hEdit, Final);

}

Non ?
void Aurevoir( void ); //Bonne journée
0
thejojo1 Messages postés 13 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 28 août 2006
3 août 2005 à 18:56
Meech cest bon. En passant le pointeur ca marche. Cependant ya pas que ca a faire comme modif et la dailleurs jcomprend pas vraiment pq ca change.
Fallait que je mette ma fonction Debog avant Winmain.
Aller savoir pourquoi..
Mais merci a tous =)
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
3 août 2005 à 19:01
t pas obligé de la mettre avant si tu définis un prototype


genre la faut mettre

int Debog(char*);

avant winmain si tu veux pouvoir placé ta fonction ou tu veux

Sinon faut respecter on peut pas apeler une fonction qui n'a pas encore été déclaré

d'où l'intéret des prototypes ;)
void Aurevoir( void ); //Bonne journée
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 août 2005 à 20:24
Joky pour te faire gagner du temps, je te signale que 256+1=257 (ca fait plusieurs fois que je vois que tu écris 256+1 c'est pour ca...)
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
3 août 2005 à 20:38
lol mé euhhhhh :p

C'est marqué dans tous les bouquins pour débutant :)

Vaut mieu mettre 256+1 pour mettre en évidence le caractère terminal d'une chaine :p

Et moi comme un con j'suis le truc :) lol

Oui merci merci :)

void Aurevoir( void ); //Bonne journée
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 août 2005 à 20:40
Ca t'aide beaucoup? Non la je vois pas du tout l'intérêt, j'ai jamais lu ca dans un livre moi
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
3 août 2005 à 20:43
Lol non moi ça me sert strictement à rien parce que je suis un pro mais
pour les ptit jeunes j'pense que ça peut aider à rapeller :)
void Aurevoir( void ); //Bonne journée
0
Rejoignez-nous