La lecture (iteration) d'un tableau le vide (en C)

Le problème exposé dans ce sujet a été résolu.

Bonjour a tous,

Je travail en C sur un microcontroller (PIC18 avec XC-8 en compilateur). J’ai une structure buffer que j’utilise pour receptionner les donnees d’une communication UART (voir ci-dessous). Il se peut que je transmettre cette structure a des fonctions, pour ca je la passe sous la forme de pointeur, mais quand je lis le tableau data dans ma fonction, apres ma fonction le tableau est vide. Pourquoi ?

Avec BYTE comme typedef pour unsigned char.

#define BUFFER_SIZE 15
    
typedef struct Buffer {
    uchar length;
    BYTE data[BUFFER_SIZE];
} Buffer;

// Example de lecture
void my_func(const BYTE* data, size_t length)
{
    for (size_t i = 0; i < length; i++) {
        // code de traitement
    }
}
// ici buff correspond a pointeur de la structure buffer
my_func(buff->data, buff->length);

Merci d’avance pour vos reponses ! :)

Oui en fait j’ai trouve le probleme, c’etait l’initialisation de ma structure, avant :

Buffer* buff_create(void)
{
    Buffer buff;
    buff.length = 0;
    for(ushort i = 0; i < BUFFER_SIZE; i++)
    {
        buff.data[i] = 0;
    }
    return &buff;
}

Apres :

void buff_create(Buffer* buff)
{
    buff->length = 0;
    for(ushort i = 0; i < BUFFER_SIZE; i++)
    {
        buff->data[i] = 0;
    }
}

Ainsi buff ne fait plus parti du scope juste de la function de creation mais du scope de la fonction parente aui appelle la fonction de creation :) Je l’utilise comme ca :

Buffer resp;
buff_create(&resp);
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte