Aide sur erreur de syntaxe

Signaler
Messages postés
9
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2005
-
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
-
salut à tous.
voila je suis en train de créer un programme , permettant de faire des fiches de commande par client. Dans un premier temps ont rempli le tableau, puis après ont saisi un numéro de client , et la ca doit afficher toute ses factures. Mais j'ai un petit problème de syntaxe apparement, ce qui fait que mon programme ne marche pa. Pouvez vous m'aider?
dont voici les messages d'erreurs:
16 c:\docume~1\salut\mesdoc~1\cc__~1\fichec~1.cpp
implicit declaration of function `int streql(...)'

31 c:\docume~1\salut\mesdoc~1\cc__~1\fichec~1.cpp
incompatible types in assignment of `const char[5]' to `char[10]'

erreur écrite en rouge

Merci d'avance.

#include
#include <stdlib.h>
#include <stdio.h>
int main()
{
struct designation{
char numfact[10];
char numcli[10];
char codart[10];
float pu;
int qt;
}commande[4];


int i=0;
char rep[]="o";
while(streql(rep,"o")==1){
printf("numfact :\n\r");
scanf("%s",&commande[i].numfact);
printf("numcli :\n\r");
scanf("%s",&commande[i].numcli);
printf("codart :\n\r");
scanf("%s",&commande[i].codart);
printf("prix unitaire :\n\r");
scanf("%f",&commande[i].pu);
printf("quantité :\n\r");
scanf("%i",&commande[i].qt);
i++;
printf("avez vous une ligne de commande à entrer?\n\r");
scanf("%s", &rep);
}
commande[i+1].numfact="0000";


float totalcmd=0, totfact, lign;
char numcli[10];
char numfact[10];
i=0;
printf("saisir numcli\n\r");
scanf("%s",&numcli);
while(streql(commande[i].numfact,"0000")==0){
while(streql(commande[i].numcli,numcli)==0 && streql(commande[i].numfact,"0000")==0){
i++;
}
numfact=commande[i].numfact;
printf("facture num : %i\n\r",numfact);
totfact=0;
while(streql(commande[i].numcli,numcli)==1 && streql(commande[i].numfact,numfact)==1){
lign=commande[i].pu * commande[i].qt;
printf("code article: %s\n\r,prix unitaire: %f\n\r,quantite: %i\n\r,total: %f\n\r",commande[i].codart, commande[i].pu ,commande[i].qt ,lign);
totfact=totfact+lign;
i++;
}
}
printf("\n\r");
printf("total commande : %f",totalcmd);


system("PAUSE");
return 0;
}

6 réponses

Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

* la premiere: je ne connais pas moi non plus la fonction streql, mais je te propose
while(!strcmp(rep,"o")) si j'ai bien saisi le sens de streql

* la deuxième: strcpy(commande[i+1].numfact,"0000");
Messages postés
9
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2005

o merci c cool de ta part, j vais essayer ca de suite
Ba en fait, j ai lu dans un bouquin que streql, servait à vérifier l'égalité de deux chaines de caractères, mais bon c'était la première fois que je la mettais en oeuvre.
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

en fait strcmp est plus connu et renvoit 0 si les chaines sont equivalentes.
Messages postés
9
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2005

ok merci, j 'ai effectué ces modifications et quelques d'autres, maintenant le programme marche.
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

En ce qui concerne ton code j'ai une petite remarque concernant le type chane
donc quadn tu voudars lire une chaine avec scanf("%s",NOM_variable)
sans mettre le et commercial & sinon si tu veux prendre en considértaion les
espaces utilise plutôt gets(nom_chaine) bonne chance pour la suite.
une deuxieme chose est que j'ai jamais vu streql(...) mais je crois si tu compare
deux caractères c pas la peine utilise slmnt if (rep==''o) ça feras l'affaire et en cas
de chaine utilise aussi strcmp(chaine1,chaine2) tu truveras ts ça sur le Help
Ciao
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

Je me rappelle une autre chose au lieu de lire un caractère avec scanf(%c",&rep)
tu feras mieux rep=getch() sans affichage de la lettre ou bien rep=getche()
pour que tu vois le résultat entré ok Bon courage