Flux rss
Rechercher : dans
Par :

Aide appel de fonctions (langage C)

paul75, le mardi 9 novembre 2004 à 23:11:57 
 Signaler ce message aux modérateurs

Bonsoir,
voila, je doit saisir les renseignements parmi :
code produit (chaine de 3 caractere)
quantite vendue (entier)
on s'arrete des qu'on entre XXX pour code-produit.

voici ce que j'ai essaye de faire :

#include <stdio.h>
#include <string.h>
typedef char CH3[4];

void main()
{
	CH3 cdeprod;
	int qte;
	char SAISIE(CH3,int);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod,"XXX")!=0)
	{
		char SAISIE(CH3,int);
		gets(cdeprod);
	}
}


//fonction saisie
char SAISIE(CH3 cdeprod,int qte)
{
	printf("Entrez une quantite");
	scanf("%d",qte);
	return(qte);
}


voila j'arrive pas a declarer la fonction, elle ne veut pas !
j'ai du oublier un truc mais je ne saurais le dire.

Merci

1

beeboo, le mardi 9 novembre 2004 à 23:25:12

Dans ton code tu déclares 2 fois SAISIE, en fait à la 3ème ligne de ton main, en faisant précéder SAISIE(CH3,int); par char, c'est une redéclaration que tu fais, enlèves le char de cette ligne et c'est OK.

#include <stdio.h>
#include <string.h>
typedef char CH3[4];

void main()
{
	CH3 cdeprod;
	int qte;
	char  SAISIE(CH3,int);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod,"XXX")!=0)
	{
		char SAISIE(CH3,int);
		gets(cdeprod);
	}
}


//fonction saisie
char SAISIE(CH3 cdeprod,int qte)
{
	printf("Entrez une quantite");
	scanf("%d",qte);
	return(qte);
}

Répondre à beeboo

2

beeboo, le mardi 9 novembre 2004 à 23:27:11

J'oubliais, c'est la même chose dans la boucle while, bien entendu :-) (suis-je distrait.)

Répondre à beeboo

3

paul75, le mardi 9 novembre 2004 à 23:31:04
  • +1

Bonsoir et merci,
le probleme c'est que si je l'enlève, il me met à la compilation 6 problemes :
le premier me signale une "error C2065: 'SAISIE' : undeclared identifier"
ensuite :
"error C2275: 'CH3' : illegal use of this type as an expression"

voila

merci infiniment

Répondre à paul75

4

Guki, le mercredi 10 novembre 2004 à 00:06:16

Salut!

Manque le prototype de la fonction SAISIE avant la définition de la fonction main. Pas de type devant l'application d'une fonction seulement pendant sa définition et la déclaration du prototype. De plus tu ne mets pas en argument les noms des variables que tu as déclarés précédemment.

Observe la différence.

#include <stdio.h>
#include <string.h>

typedef char CH3[4];

/* prototype de saisir */

char saisir(CH3 cdeprod, int qte);

int main(void)
{
	CH3 cdeprod;
	int qte;

	/*
		ici on passe cedprod et qte en argument
		on applique la fonction pas besoin de char
	*/

	saisir(cdeprod, qte);
	printf("Entrez un code-produit :\n");
	gets(cdeprod);
	while(strcmp(cdeprod, "XXX") != 0)
	{

	/*
		même chose ici
	*/
		saisir(cdeprod, qte);
		gets(cdeprod);
	}

	/*
		on retourne la valeur de la macro qui vaut 0
	*/

	return EXIT_SUCCESS;
}


/* fonction saisir */

char saisir(CH3 cdeprod, int qte)
{
	printf("Entrez une quantite");
	
	/*
		ne pas oublier l'adresse & pour scanf
	*/

	scanf("%i", &qte);
	return qte;
}


Je pense que ça passera mieux ainsi bien que je n'ai pas essayé de comprendre le code. ;-)

Répondre à Guki

5

beeboo, le mercredi 10 novembre 2004 à 00:07:56

Pas mieux :)

Répondre à beeboo

6

 LeSousss, le mercredi 10 novembre 2004 à 10:49:02
  • +1

Salut, je ne suis pas vraiment sur mais essaye çà :

#include <stdio.h>
#include <string.h>

typedef char CH3[4];

//Je ne sais pas pourquoi tu veut envoyer cdeprod et qte dans ta fonction puisque tu ne les utilise pas
//char saisir(CH3 cdeprod, int qte);
//devient
char saisir();

int main(void)
{
CH3 cdeprod;
int qte;
//dans ta fonction tu retourne qte mais tu n'a pas de variable qui reçoit cette valeure donc :
qte = saisir();
printf("Entrez un code-produit :\n");
gets(cdeprod);
while(strcmp(cdeprod, "XXX") != 0)
{
qte = saisir();
gets(cdeprod);
}

return 0;
}

char saisir(CH3 cdeprod, int qte)
{
printf("Entrez une quantite");
scanf("%d", &qte);
return qte;
}

Voila dis moi si ca marche !

Répondre à LeSousss
Langage C++ - Les pointeurs Comme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition... www.commentcamarche.net/contents/cpp/cpppoint.php3
Langage C - Les fonctions La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du... www.commentcamarche.net/contents/c/cfonc.php3
Petit programme en langage C (Résolu) Bonjour, Etantdonné débutant en langage C, permettez moi S.V.P de vous adresser mon petit probléme que je n'arrive à comprendre la réponse: l'ennoncé de l'exercie: Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale et... www.commentcamarche.net/forum/affich-2811312-petit-programme-en-langage-c
[Langage C] C/C++ Erreur de segmentationQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux... www.commentcamarche.net/faq/sujet-4791-langage-c-c-c-erreur-de-segmentation
Les files en langage CLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un... www.commentcamarche.net/faq/sujet-8282-les-files-en-langage-c
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
Documentation des fonctions du langage CBonjour, Voila j'ai besoin d'utiliser certaines fonctions du langage C que je ne connais pas et je me demandais si quelqu un connaitrait un site qui les repertorie (un peu à la facon de la javadoc pour JAVA ou des docs nexen pour PHP / MYSQL) Parce... www.commentcamarche.net/forum/affich-2170184-documentation-des-fonctions-du-langage-c
Langage C pointeurs, creation de liste. (Résolu)Bonjour a tous. Voila, je rencontre quelaues petits preoblemes en langage C. Le but est de creer des fiches afin de creer une listes les contenant. Il faut ensuite afficher ce que l on a entre dans chaque fiche, puis afficher enfin le nombre de fiches... www.commentcamarche.net/forum/affich-2170245-langage-c-pointeurs-creation-de-liste
Language c cours+exercices corrigésbonjour tout le monde je voulait avoir un cours sur le language c ainsi que des exercices simples accompagnés de correction www.commentcamarche.net/forum/affich-1662403-language-c-cours-exercices-corriges
Langage C - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
Langage C++ - Les types de donnéesLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3
Langage C - Les types de donnéesLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le... www.commentcamarche.net/contents/c/ctype.php3