Bonjour,
Voila je suis entrain de faire un programme qui doit permettre à l'utilisateur d'encoder les valeurs de son choix pour ensuite
l'ajouter à la bonne possition dans une liste chainée .
L'ajout à la bonne place s'effectue d'abord sur la date et ensuite l'heure de début.
Le problème est que lorsque l'on ajoute 4 dates identiques et 4 heures de début différentes cela ne place pas la derniere serie de valeur au bon endroit .
Voila le code :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct {
char nom[41];
char date[13];
char heureDeb[6];
char heureFin[6];
char chaine[11];
char genre[21];
struct programmeTv *suivant;
} programmeTv;
main(){
programmeTv *depart, *noeud,*lecture,*intercale,*nouveau_noeud,*noeud_precedent;
depart=NULL;
noeud=NULL;
lecture=NULL;
intercale=NULL;
nouveau_noeud=NULL;
noeud_precedent=NULL;
void effacerSautLigne(char chaine[]);
int compare(char ch1[],char ch2[]);
int choix,n=1,rep=-1,place[100]={0},i=0,j=0,k=0;
char ligne[92],nomFichier[50],tmp[100],nom[22],nomprog[41],date[13],heureDeb[7],heureFin[7],chaine[22],genre[22],suppr[2],nomtmp[41];
printf("Veuillez saisir le nom :");
fgets(nom,sizeof(nom),stdin);
effacerSautLigne(nom);
printf("Veuillez saisir la date :");
fgets(date,sizeof(date),stdin);
effacerSautLigne(date);
printf("Veuillez saisir l'heure de début :");
fgets(heureDeb,sizeof(heureDeb),stdin);
effacerSautLigne(heureDeb);
printf("Veuillez saisir l'heure de fin :");
fgets(heureFin,sizeof(heureFin),stdin);
effacerSautLigne(heureFin);
printf("Veuillez saisir la genre :");
fgets(genre,sizeof(genre),stdin);
effacerSautLigne(genre);
printf("Veuillez saisir la chaine :");
fgets(chaine,sizeof(chaine),stdin);
effacerSautLigne(chaine);
noeud_precedent=depart;
noeud=(programmeTv*) depart->suivant;
while((noeud) ){
if (compare(date,noeud->date)>0){
noeud = noeud->suivant;
noeud_precedent = noeud_precedent->suivant;
break;
}
if (compare(date,noeud->date)==0){
if(compare(heureDeb,noeud->heureDeb)>0){
noeud = noeud->suivant;
noeud_precedent = noeud_precedent->suivant;
//noeud = noeud->suivant;
//noeud_precedent = noeud_precedent->suivant;
break;
}
else break;
}
}
nouveau_noeud = (programmeTv *) malloc(sizeof(programmeTv));
nouveau_noeud->suivant=noeud;
noeud_precedent->suivant = nouveau_noeud;
strcpy(nouveau_noeud->nom,nom);
strcpy(nouveau_noeud->date,date);
strcpy(nouveau_noeud->heureDeb,heureDeb);
strcpy(nouveau_noeud->heureFin,heureFin);
strcpy(nouveau_noeud->genre,genre);
strcpy(nouveau_noeud->chaine,chaine);
}
void effacerSautLigne(char chaine[]){
char *positionEntree = NULL;
positionEntree = strchr(chaine, '\n'); // On recherche l'"Entrée"
if (positionEntree != NULL) // Si on a trouvé le retour à la ligne
{
*positionEntree = '\0'; // On remp
}
}
void effacerEspace(char* str) {
char c, *p;
p = str;
do
while ((c = *p++) == ' ') ;
while (*str++ = c);
return;
}
int compare(char ch1[],char ch2[]){
void effacerEspace(char* str);
void modif(ch1,ch2);
char copie1[45],copie2[45];
strcpy(copie1,ch1);
effacerEspace(copie1);
strcpy(copie2,ch2);
effacerEspace(copie2);
modif(copie1,copie2);
return strcmp(copie1,copie2);
}
Merci d'avance
Dodo1309