Réception d'une chaine de caractère en c

Fermé
tibo07130 - 14 mai 2011 à 00:40
tibo07130 Messages postés 1 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 18 mai 2011 - 18 mai 2011 à 16:52
Bonjour,

Je conçois un programme pour envoyer et recevoir des chaînes de caractères. Pas de problème pour envoyer une chaine de caractères mais j'ai un souci pour la recevoir. Je reçois seulement un caractère à l'aide de cette fonction :
char recevoir_car()
{
TXEN=0;
CREN=1;
while (RCIF!=1); //et on bascule le PIC en recepteur
return (RCREG);
et voici ma fonction qui pose problème pour recevoir la chaine de car :
const unsigned char* recevoir_ch()
{
int i=0;
do
{
chaine[i] = recevoir_car();
i++;
}
while(recevoir_car() != '\0'); // On boucle tant qu'on n'est pas arrivé à l'\0
i--; // On retire 1 caractère de long pour ne pas compter l'\0
return *chaine;
}
vous voyez un problème quelque part?
merci d'avance.
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
14 mai 2011 à 00:54
Bonjour,
Ta variable "chaine" est définie où ? Et comment ?
Ce n'est pas : return *chaine; mais return chaine; qu'il faut mettre.

Cdlt,
0
emit-fr Messages postés 19 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 8 décembre 2021 8
18 mai 2011 à 13:31
Bonjour,

Y'a du boulot: plusieurs erreurs !

char chaine[TAILLE_MAX];
unsigned short recevoir_ch(void)
{
int i=0;
do
{
chaine[i] = recevoir_car();
i++;
}
while(chaine[i-1] != '\0'); // On boucle tant qu'on n'est pas arrivé à l'\0
i--; // On retire 1 caractère de long pour ne pas compter l'\0
return i;
} 

ou
void main(void)
{
char chaine[TAILLE_MAX];
recevoir_ch(chaine);

}

unsigned short recevoir_ch(char *c)
{
int i=0;
do
{
*c = recevoir_car();
i++;
}
while(*c++ != '\0'); // On boucle tant qu'on n'est pas arrivé à l'\0
i--; // On retire 1 caractère de long pour ne pas compter l'\0
return i;



https://www.emit-fr.com/
0
tibo07130 Messages postés 1 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 18 mai 2011
18 mai 2011 à 16:52
fiddy : j'avais définie chaine comme pointeur... j'ai un peu de mal peut tu corriger mon programme pour qu'on en discute?

emit-fr : je ne comprend pas pourquoi tu retourne i... i est juste un compteur pour moi et ce qui m'interesse c'est plutot ce qu'il y a dans chaine...

cette fonction me permet de lire des trames de caractère en liaison série...
0