Merci de votre réponse.
J'ai changé des lignes de cette fonction qui me pose problème. en fait entre les 2 lignes que j'ai écrites précédemment, il y a :
Code C/C++ :
if ( !( pMsg->flags & CANMSG_RTR ) ) {
for ( i= MIN( pMsg->len, 8); i > 0; i-- ) {
*(p + data_offset + 2 * (i-1) + 2 )= 0;
sscanf( p + data_offset + 2 * (i-1), "%x", &val );
pMsg->data[ i - 1 ] = val;
}
}
en fait je range, dans le champs data de pMsg (qui est un pointeur qu'on passe à cette fonction et dont le type est CANMsg), les données hexadécimales contenues dans p (qui est un pointeur vers la donnée que je reçois sur l'USB) (l'offset est de 5).
Quand j'enlève uniquement les lignes précédentes, j'ai une erreur identique sur la ligne
Code C/C++ :
*(p + data_offset + 2 * (i-1) + 2 )= 0;
Quand j'enlève les lignes qui me posaient problème tout à l'heure ainsi que la ligne *(p + data_offset + 2 * (i-1) + 2 )= 0;, j'ai une erreur semblable (en debug) mais liée à la fonction sscanf... je suppose que cela veut dire que l'adresse "p + data_offset + 2 * (i-1)" est incorrecte mais je ne comprends pas pourquoi. la donnée vers laquelle pointe p ressemble à "t140300451C3709\r". dans lequel len est le 5ème caractère.
le pointeur pointe vers une donnée disponible d'après ces lignes... ou pas ?
est-il possible d'écrire autrement les lignes qui posent problème ?
Merci d'avance.