Se connecter / S'enregistrer
Votre question

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

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
Anonyme
8 Novembre 2007 22:10:13

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

Anonyme
8 Novembre 2007 22:36:13

Bon j'ai réussi à trouver l'erreur lol.
J'ai juste oublier de mettre le parametrage de fonction dans le fichier.h.

Par contre, il ne fonctionne plus aussi bien, et apparemment on dirait que ma boucle do ne fonctionne pas ...
a b L Programmation
8 Novembre 2007 22:57:56

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'));
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS