Pour la main je l'ai squizzé en même temps que d'autre fonctionalités que j'ai retiré pour alléger le code.
Vraiment navré, je sais pas pourquoi mais aujourd'hui après avoir annulé certaines lignes que j'avais codé la dernière fois, mon code marche alors que j'avais passé 2h à essayer de corriger un bug en début de semaine><
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char *pointeur;
char *separateur = { "," };
char *buffer;
char type;
int numero_trame=1;
char *Chaine_entrante="GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62";
char *latitude= "0";
char *longitude;
char *heure;
char *NS;
char *WE;
char *vitesse;
buffer = strdup ( Chaine_entrante );
pointeur = strtok( buffer, separateur );
printf ("Type de Trame : %s\n", pointeur);
while( pointeur != NULL )
{
pointeur = strtok( NULL, separateur );
if ( pointeur != NULL )
{
numero_trame++;
if (numero_trame==2){
heure=pointeur;
}
if (numero_trame==5){
NS=pointeur;
}
if (numero_trame==7){
WE=pointeur;
}
if (numero_trame==8){
vitesse=pointeur;
}
if (numero_trame==4){
latitude=pointeur;
}
if (numero_trame==6){
longitude=pointeur;
}
printf ("Trame numero %d: %s\n",numero_trame, pointeur);
}
}
printf ("heure : %s\n", heure);
printf ("latitude : %s", latitude);
printf ("N/S : %s\n", NS);
printf ("longitude : %s", longitude);
printf ("W/E : %s\n", WE);
printf ("vitesse : %s\n", vitesse);
return 0 ;
}
$ separateur
Type de Trame : GPRMC
Trame numero 2: 081836
Trame numero 3: A
Trame numero 4: 3751.65
Trame numero 5: S
Trame numero 6: 14507.36
Trame numero 7: E
Trame numero 8: 000.0
Trame numero 9: 360.0
Trame numero 10: 130998
Trame numero 11: 011.3
Trame numero 12: E*62
heure : 081836
latitude : 3751.65N/S : S
longitude : 14507.36W/E : E
vitesse : 000.0
Donc le programe marche correctement.
Par contre j'ai une fonction de saisie de chaine que je n'arrive pas à faire marcher (segmentation fault)...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *Chaine="$GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62";
char *Chaine_entrante;
void saisiechaine (char *Chaine_entrante, char *Chaine)
{Chaine_entrante=Chaine;
}
int main ()
{
char *pointeur;
char *separateur = { "," };
char *buffer;
char type;
int numero_trame=1;
char *latitude= "0";
char *longitude;
char *heure;
char *NS;
char *WE;
char *vitesse;
buffer = strdup ( Chaine_entrante );
pointeur = strtok( buffer, separateur );
printf ("Type de Trame : %s\n", pointeur);
while( pointeur != NULL )
{
pointeur = strtok( NULL, separateur );
if ( pointeur != NULL )
{
numero_trame++;
if (numero_trame==2){
heure=pointeur;
}
if (numero_trame==5){
NS=pointeur;
}
if (numero_trame==7){
WE=pointeur;
}
if (numero_trame==8){
vitesse=pointeur;
}
if (numero_trame==4){
latitude=pointeur;
}
if (numero_trame==6){
longitude=pointeur;
}
printf ("Trame numero %d: %s\n",numero_trame, pointeur);
}
}
printf ("heure : %s\n", heure);
printf ("latitude : %s", latitude);
printf ("N/S : %s\n", NS);
printf ("longitude : %s", longitude);
printf ("W/E : %s\n", WE);
printf ("vitesse : %s\n", vitesse);
return 0 ;
}
Erreur de segmentation (core dumped)