1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#include <stdio.h>
typedef struct Trame
{
char AdresseDuModule[2+1];
char Fonction[2+1];
char AdresseDuRegistre[4+1];
char EtatDuVentilateur[4+1];
char Checksum[4+1];
}st_Trame;
int main(void)
{
int err;
char ChaineRecue[17] = "030600020001E828";
st_Trame * MaTrame = malloc(sizeof(st_Trame));
if(MaTrame==NULL)return -1;
err =sscanf(ChaineRecue,"%2s%2s%4s%4s%4s",MaTrame->AdresseDuModule,MaTrame->Fonction,MaTrame->AdresseDuRegistre,MaTrame->EtatDuVentilateur,MaTrame->Checksum);
if(err!=5)return -2;
printf("%s\n",MaTrame->AdresseDuModule); // doit contenir "03"
printf("%s\n",MaTrame->Fonction); // doit contenir "06"
printf("%s\n",MaTrame->AdresseDuRegistre); //doit contenir "0002"
printf("%s\n",MaTrame->EtatDuVentilateur); // doit contenir "0001"
printf("%s\n",MaTrame->Checksum);; //doit contenir "E828"
free(MaTrame);
MaTrame=NULL;
return 0;
} |