Aide sur erreur de syntaxe

skadomers Messages postés 9 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 mai 2005 - 29 janv. 2005 à 22:46
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009 - 4 févr. 2005 à 22:26
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

bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
29 janv. 2005 à 22:55
* 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");
0
skadomers Messages postés 9 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 mai 2005
29 janv. 2005 à 23:01
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.
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
29 janv. 2005 à 23:43
en fait strcmp est plus connu et renvoit 0 si les chaines sont equivalentes.
0
skadomers Messages postés 9 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 mai 2005
30 janv. 2005 à 11:34
ok merci, j 'ai effectué ces modifications et quelques d'autres, maintenant le programme marche.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009
4 févr. 2005 à 22:09
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
0
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009
4 févr. 2005 à 22:26
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
0
Rejoignez-nous