Bonjour,
j'ai une liste chainée de contacts (nom+prénom+tel+mail). Pour chaque contacts, je souhaiterait créer une liste chainée à l'intérieur de celle çi. Mon problème est que je n'arrive pas à mettre NULL dans les (et non la) liste chainée imbriquée.
Voilà ce que j'ai pour l'instant :
//structure stockage Mail (le message)
typedef struct {
char SMS[tailleSMS+1],date[150],horloge[128]; // on rajoute toujours +1 pour avoir la place pour le "\0"
}Sms;
///////////////////////////////////////////////////////////////////////////////////////////////////
//structure liste chainée (donnée + pointeur)
typedef struct liste_sms{
Sms UnSMS;
liste_sms *p_suivant;
}liste_sms;
///////////////////////////////////////////////////////////////////////////////////////////////////
//structure stockage contact (les données)
typedef struct {
char numerotel[T+1]; // on rajoute toujours +1 pour avoir la place pour le "\0"
char name[N+1], pren[N+1],adrmail[M+1];
liste_sms UnSMS;
}Contact;
///////////////////////////////////////////////////////////////////////////////////////////////////
//structure liste chain?e (donnée + pointeur)
typedef struct fiche{
Contact UnContact;
fiche *p_suivant;
}fiche;
///////////////////////////////////////////////////////////////////////////////////////////////////
voilà donc ensuite j'essaye d'initialiser les pointeurs de type liste_mail par NULL.
Dans mon main(), je déclare *p-liste de type fiche, je rempli tous les "jetons" de type Contact exepté liste_mail, que je ne touche pas encore.
Puis j'envoie p_liste (qui pointe sur la tête de la liste chainée c'est certain) vers une fonction, qui renvoie p_liste vers une autre fonction (sans y toucher).Voiçi l'appel depuis de main() :
envoyerSMS(p_liste,nom_a_supprimer,prenom_a_supprimer,tel_a_supprimer,presence_contact);
// elle renvoie p_liste à Ecrire SMS
Puis voici ma fonction Ecrire_SMS :
void EcrireSMS(char *nomSMS, char *prenomSMS,char *telSMS,char *mailSMS,fiche *p_liste,int nombre_contact)
{
FILE* listeSMS = NULL;
char lettreSMS,SMS[tailleSMS+1],horloge[128],date[150];
int i=0,fin=0;
fiche *ptr=p_liste;
_tzset();
_strtime(horloge);
time_t time_of_day; //valeur contenant le temps écoulé depuis le 01/01/1970
time_of_day = time( NULL ); //récupérer le temps passé
strftime(date,150,"%Y/%m/%d",localtime( &time_of_day ) ); //inscrire dans la chaîne buffer notre string telle que nous la voulons
listeSMS=fopen("SMS.txt","w+");
system("cls");
printf("Entrez votre SMS (160 caractères au maximun)\n");
while (lettreSMS!=13&&i<tailleSMS)
{
lettreSMS=getch();
printf("%c",lettreSMS);
SMS[i]=lettreSMS;
i++;
}SMS[i-1]='\0';
while (fin==0) // C'EST ICI QUE J'ESSAIE DE L'INITIALISER
{
ptr->UnContact.UnSMS.p_suivant=NULL;
if(ptr->p_suivant==NULL)
fin=1;
else
ptr=ptr->p_suivant;
} // apparement j'ai essayer de faire printf("%s",ptr->UnContact.UnSMS.p_suivant); ça me met null. ok
if (listeSMS) // ICI J'AIMERAI CREER UN JETON DE TYPE LISTE_SMS mais mon pointeur ptr ne pointe plus sur le même endroit et donc je ne sais pas comment ré-atteindre le bon endroit
{
printf(listeSMS,"%s|%s|%s|%s|%s|%s|%s|\n",nomSMS,prenomSMS,telSMS,mailSMS,date,horloge,SMS);
fclose(listeSMS);
}
}
J'aimerai créer un jeton de la manière suivante :
liste_sms* nouveau=(liste_sms*)malloc(sizeof(liste_sms)); // on crée un nouveau jeton de type liste_sms
creation_jetonSMS(nouveau,date,horloge,SMS);
(*nouveau).p_suivant=(*p_liste).UnContact.UnSMS.
(*p_liste).UnContact.UnSMS.p_suivant=nouveau;
mais bon je ne sais pas si c'est avec p_liste que je doit le faire.
Merci et si vous avez des questions, n'hésitez pas je reveindrait régulièrement pour regarder vos commentaires.
+++

Moi ce que j'ai pensé c'était de faire :
une structure avec :
mail
prenom
nom
tel
1_liste_chainée