Se connecter avec
S'enregistrer | Connectez-vous

[Langage C]Erreur, enfin ... y'a pas d'erreur !

Dernière réponse : dans Programmation

Bonjour à tous,

J'avais une application test qui fonctionnait très bien depuis un an.

C'est une vidéothèque qui insérait tout simplement un réalisateur puis lui attribue des films. C'est le seul projet en langage C que j'ai réalisé.

Enfin seul, non ... j'en réalise un en ce moment, et j'ai décidé également d'integrer mon ancien projet dans le nouveau ...

Cependant, j'ai fais quelques modifs directement dans le script de la premiere application, pour qu'à chaque fois que l'on saisit un réalisateur, on nous demande si on veut saisir directement les films ou pas de ce réalisateur ( alors qu'autrefois on saisissait une série de réalisateur, puis on fait une recherche d'un réalisateur et on lui saisie autant de films que l'on lui souhaite ... )

Pour les fanatiques du langages C, voici un code partiel de l'ancienne application*

Spoiler
realisateur AddRealisateur(realisateur tmp)
{
realisateur cour;
char test;
do
{
cour=malloc(sizeof(*cour));
printf("\nEntrez un nom de realisateur : ");
scanf("%s",cour->real);
cour->realisateurNext=tmp;
cour->filmNext=NULL;
tmp=cour;
do{
cour->filmNext=NULL;
tmp=cour;
return(tmp);
} while(strcmp(tmp->real,"0"));

}

void AddFilm(realisateur pp)
{ char nomf[20]; film courf;
printf("A quel realisateur voulez-vous ajouter un film ?\n");
scanf("%s", nomf);
while(strcmp(pp->real,nomf))
{
pp=pp->realisateurNext;
do {courf=malloc(sizeof(*courf));
printf("\nEntrez un titre de film : ");
scanf("%s",courf->titre);
courf->filmNext=pp->filmNext;
pp->filmNext=courf;} while(strcmp((pp->filmNext)->titre,"0"));};
}


Et maintenant la nouvelle version, celle qui ne marche pas bien évidemment ...

Spoiler
realisateur AddRealisateur(realisateur tmp)
{
realisateur cour;
char test;
do
{
cour=malloc(sizeof(*cour));
printf("\nEntrez un nom de realisateur : ");
scanf("%s",cour->real);
cour->realisateurNext=tmp;
cour->filmNext=NULL;
tmp=cour;
printf("Voulez vous saisir un film pour ce réalisateur ? O-N \n");
do{
scanf("%c", &test);
if ((test == 'o') || (test == 'O'))
{
cour->filmNext=NULL;
tmp=cour;

Addmovieviareal(cour);
return(tmp);

}
else
{
cour->filmNext=NULL;
tmp=cour;
return(tmp);
}}while((test != 'o') || (test != 'O') || (test != 'N') || (test != 'n'));
} while(strcmp(tmp->real,"0"));

}

void Addmovieviareal(realisateur pp)
{ film courf;
do {courf=malloc(sizeof(*courf));
printf("\nEntrez un titre de film : ");
printf("\nSi vous souhaitez ne plus inserer de film pour ce réalisateur, veuille saisir le chiffre 0");
scanf("%s",courf->titre);
courf->filmNext=pp->filmNext;
pp->filmNext=courf;} while(strcmp((pp->filmNext)->titre,"0"));
}[/spoiler

Voila ... j'arrive pas à trouver l'erreur mais en tout cas, il ne veut pas me le compiler ...

Voici le message d'erreur ...

225 C:\Documents and Settings\XYZ\Mes documents\XCV\Projet C\liste.c conflicting types for 'Addmovieviareal' *
210 previous implicit declaration of 'Addmovieviareal' was here
[liste.o] Error 1

Autres pages sur : langage erreur erreur

Lassé par la pub ? Créez un compte
Expert Programmation

while((test != 'o') || (test != 'O') || (test != 'N') || (test != 'n'));
(La boucle s'arrête lorsque (test == 'o') && (test == 'O') && (test == 'N') & (test != 'n'))
Tu continues tant que test !='o' ou test !='O' (quelque soit la valeur de test, une des 2 conditions sera toujours vraie, donc c'est équivalent à while(1) :) 

ça c'est mieux:
while((test != 'o') && (test != 'O') && (test != 'N') && (test != 'n'));
Lassé par la pub ? Créez un compte
Tom's guide dans le monde