Ptobléme de programmation en langage C

Fermé
madavekia - 23 janv. 2009 à 20:31
 madavekia - 24 janv. 2009 à 16:12
Bonjour,
j'ai écris un tout petit programme tres tres modéste en langage C pour un un TP,mais je bute incésement sur un probléme récurent lors de la compilation, les probléme concernent la bibliothéque <conio> et aussi l'include, je vous serez vraiment reconnaissent de m'aider a regler le probléme , voici le code du programme


#include <stdio.h>
#include <conio.h>
typedef struct
{int C;
char TIT[30];
char AU[25];
int AD;
}livre ;
livre T[100];
void saisie(void)
{
int I ;
char rep ;
printf("entrez les infos du tableau");
rep ='o' ;
I = 1 ;
do
{
scanf("%d,%s,%s,%d",&T[I].C ,T[I].TIT ,T[I].AU ,&T[I].AD);
printf("est-ce que vous avez un autre livre?(O/N)");
rep = getch () ;
++I;
while ( (I<=100) && ((rep=='o') || (rep=='O')) );
}
void edition (int M )
{
printf("entrez l'année d'édition svp");
scanf("%d",&M);
for(int I=1, I<=100, ++I)
{
if T[I].AD=M
printf("%s,%s",T[I].TIT ,T[I].AU);
}
}
void ajout(void)
{
int I ;
int N ;
char rep ;
printf("entrez les informations du nouveau tableau");
I=1;
rep="O";
do
{
scanf("%d,%s,%s,%d",&T[I].C ,T[I].TIT ,T[I].AU ,&T[I].AD);
++I;
printf("est-ce-vous avez un autre livre?(O/N)");
rep = getch () ;
while((rep=='o')||(rep=='O')) && (I<= N);
}
}
void perte(void)
{
int num; livre Tab[20];
printf("entrez le code du livre perdu svp");
scanf("%d",&num);
for(int I=1 ,I<=100 ,++I);
{
if T[I].C=num
Tab[I]=T[I];
}
}
void total(void)
{
int AN;
int K;
printf("entrez l'ann‚e dont vous voulez calculer le total");
scanf("%d",&AN);
for(int I=1 ,I<=100 ,++I);
{
if T[I].AD=AN
K++;
}
printf("le nombre total des livres est %d",K);
}
main()
{
clnscr()
int C;
printf("veuillez entrer votre choix");
printf(0-saisie);
printf(1-edition);
printf(2-perte de livre);
printf(3-ajout de livre);
printf(4-total)
scanf("%d",&C);
switch C
{
case 0:saisie() ;
break ;
case 1:edition(M);
break;
case 2:perte();
break;
case 3:ajout();
break;
case 4:total();
break;
default printf("erreur");
}
}

je vous recerie d'avance.
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 janv. 2009 à 20:57
Salut,
Attention, conio.h ce n'est pas portable. Essaie d'éviter de l'utiliser autant que possible.
A la place de getch(), getchar() suffira.
Attention, à ton scanf. Tu utilises "%s, %s" ce qui n'est pas compatible étant donné que la virgule est un caractère. Donc problème.
Le mieux est de le faire par ligne. Par exemple :
char chaine[31];
scanf("%30s",chaine);

Ou encore mieux, utilise fgets().
Lorsque tu utilises un getchar() ou compagnie, n'oublie pas de vider le buffer clavier avec : while(getchar()!='\n');
Sinon tu risques d'avoir des petites surprises dans certains cas ;).
Et enfin, le prototype de main() est int main(void) et non void main(void) et n'oublie pas le return 0; final.

J'espère que ça marchera mieux. Tiens nous au courant, en postant la nouvelle version et en l'incluant dans des balises codes (à droite du bouton souligner) pour garder l'indentation.

Cdlt
0
je te remercie beaucoup fiddy pour ton aide,je vais voir si ça marche et je te rendrai une réponse
0