Struture en c

Fermé
perdue - 28 févr. 2008 à 18:20
 amigo - 28 févr. 2008 à 22:24
Bonjour,

Voici mon programme qui doit lire et afficher cette structure:


les erreurs à la compilation
Compiling...
61.c
F:\61.c(22) : error C2054: expected '(' to follow 'Fiche'
F:\61.c(22) : error C2085: 'Lire_chaine' : not in formal parameter list
F:\61.c(23) : error C2085: 'Afficher_chaine' : not in formal parameter list
F:\61.c(30) : error C2085: 'main' : not in formal parameter list
F:\61.c(30) : error C2143: syntax error : missing ';' before '{'
F:\61.c(53) : error C2017: illegal escape sequence
Error executing cl.exe.

61.exe - 6 error(s), 0 warning(s)

on peut l'aider à corriger??

merci



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

#define NOM 30
#define PRE 25

struct fiche_membre {

	char nom_membre[NOM];
	char prenom_membre[PRE];
	int num_membre;
	int age_membre;
	float montant_ardoise;
};

typedef struct fiche_membre Fiche

void Lire_chaine (char *, int);
void Afficher_chaine (char *p, int nb, int MAX);

//void Lire_chaine (Fiche);
//void Affiche_chaine(Fiche);

void main (void)

{
	struct Fiche membre;

	
	
	
	
	printf("Bonjour,veuillez indiquer:\n\n");

	printf("Votre Nom: ");

	//Lire_chaine (Fiche);

	Lire_chaine (membre.nom_membre,NOM);

	printf("\nVotre Prenom: ");

	//Lire_chaine (Fiche);

	Lire_chaine (membre.prenom_membre,PRE);

    do
	{
		printf("Entrez votre numero de membre: [1-250]"\n);
		scanf("%d",&membre.num_membre);

	}while(membre.num_membre < 1 || membre.num_membre >250);

	do
	{
		printf("Entrez votre age:[18-99]\n");
		scanf("%d",&membre.age_membre);
	}while (membre.age_membre < 18 || membre.age_membre > 99);

	do
	{
		printf("Entrez le montant t':[0-500]\n");
		scanf("%d",&membre.m que vous devez au caféntant_ardoise);
	}while (membre.montant_ardoise < 0 || membre.montant_ardoise > 500);
	
	system("cls");

	printf("Voici vos infos:\n");
	printf(" Votre Nom:\n");
	Afficher_chaine (membre.nom_membre);
	printf("Votre prenom:\n");
	Afficher_chaine(membre.prenom_membre);
	printf("Votre numero de membre:\n", membre.num_membre);
	printf("Votre Age:\n",membre.age_membre);
	printf("Vous devez au café,un montant de:\n", membre.montant_ardoise);
	




}


void Lire_chaine(char *vchar, int MAX)

//void Lire_chaine (Fiche)

{
	char a;
	int cpte;

	//char *vchar;
	//int MAX;

	cpte=0;

	do
	{
		fflush(stdin);
		a = getchar();
		a = toupper(a);

	}while(a<'A' || a>'Z');

	while((cpte<MAX-1) && (a !='\n'))
	{
		*vchar = a;
		vchar++;
		cpte++;

		do
		{
			a = getchar();

			if(a != '-' && a!='\n')
			{
				a = toupper(a);
			}

		}while((a<'A' || a>'Z') && a != '-' && a!='\n');
	}

	*vchar = '\0';

} 





void Afficher_chaine (char *p, int nb, int MAX)

//void Afficher_chaine (Fiche)
{
     char *pi,*pj;
	 //char *p;

//	 int nb;
//	 int MAX;

     for(pi=p;pi<p+nb*MAX;pi+=MAX)
     {
          
          printf("%s",pi);
          printf("  ");
     }
     printf("\n");
}



6 réponses

typedef struct fiche_membre Fiche ;
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
28 févr. 2008 à 19:42
Salut,

voici quelques erreurs

cette ligne doit se finir avec un ;

typedef struct fiche_membre Fiche;

Tu as utilisé un typedef donc le mot struct ne doit plus être utilisé

Au lieu de
struct Fiche membre;
tu dois écrire tout simplement
Fiche membre;

Et oublie fflush(stdin) qui ne sers à rien.

A toi de voir pour la suite.
Pourquoi utliser la fonction Lire_chaine quand il y a des fonctions tout prêtes (scanf, fgets)?
0
bonsoir,

j'ai ai trouvé d'autres

scanf("%d",&membre.m que vous devez au caféntant_ardoise); &membre.m que vous devez au caféntant_ardoise

tu déclares
void Afficher_chaine (char *p, int nb, int MAX);

et tu appelle
Afficher_chaine (membre.nom_membre); il manque nb et MAX
0
Dans le main:
	printf("Votre numero de membre:\n", membre.num_membre);
	printf("Votre Age:\n",membre.age_membre);
	printf("Vous devez au café,un montant de:\n", membre.montant_ardoise);


rintf prend en premier paramètre une chaîne de format décrivant où insérer les paramètres suivants.

Par exemple:
<code>
char c = 'e';
int i = 24;
char *s = "bonjour";
unsigned int u = 22;
float f = 1.35f;

printf( "c vaut %c, i vaut %d en décimal et %x en hexadécimal, s vaut %s, u vaut %u et f vaut %f\n", c, i, i, s, u, f );
0

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

Posez votre question
voici mon nouveau code mais il y toujours 2 erreurs , les voici:

(77) : error C2198: 'Afficher_chaine' : too few actual parameters
(79) : error C2198: 'Afficher_chaine' : too few actual parameters
Error executing cl.exe.

2 error(s), 0 warning(s)

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

#define NOM 30
#define PRE 25

struct fiche_membre {

	char nom_membre[NOM];
	char prenom_membre[PRE];
	int num_membre;
	int age_membre;
	float montant_ardoise;
};

//typedef struct fiche_membre Fiche

typedef struct fiche_membre Fiche ;

void Lire_chaine (char *, int);
void Afficher_chaine (char *p, int nb, int MAX);

//void Lire_chaine (Fiche);
//void Affiche_chaine(Fiche);

void main (void)

{
	//struct Fiche membre;


	Fiche membre; 
	
	
	
	printf("Bonjour,veuillez indiquer:\n\n");

	printf("Votre Nom: ");

	//Lire_chaine (Fiche);

	Lire_chaine (membre.nom_membre,NOM);

	printf("\nVotre Prenom: ");

	//Lire_chaine (Fiche);

	Lire_chaine (membre.prenom_membre,PRE);

    do
	{
		printf("Entrez votre numero de membre: [1-250]\n");
		scanf("%d",&membre.num_membre);

	}while(membre.num_membre < 1 || membre.num_membre >250);

	do
	{
		printf("Entrez votre age:[18-99]\n");
		scanf("%d",&membre.age_membre);
	}while (membre.age_membre < 18 || membre.age_membre > 99);

	do
	{
		printf("Entrez le montant que vs devez au café:[0-500]\n");
		scanf("%d",&membre.montant_ardoise);
	}while (membre.montant_ardoise < 0 || membre.montant_ardoise > 500);
	
	system("cls");

	printf("Voici vos infos:\n");
	printf(" Votre Nom:\n");
	Afficher_chaine (membre.nom_membre,NOM/*,nb,MAX*/);
	printf("Votre prenom:\n");
	Afficher_chaine(membre.prenom_membre,PRE/*,nb,MAX*/);
	printf("Votre numero de membre:\n", membre.num_membre);
	printf("Votre Age:\n",membre.age_membre);
	printf("Vous devez au café ,un montant de:\n", membre.montant_ardoise);

}


void Lire_chaine(char *vchar, int MAX)

//void Lire_chaine (Fiche)

{
	char a;
	int cpte;

	//char *vchar;
	//int MAX;

	cpte=0;

	do
	{
		fflush(stdin);
		a = getchar();
		a = toupper(a);

	}while(a<'A' || a>'Z');

	while((cpte<MAX-1) && (a !='\n'))
	{
		*vchar = a;
		vchar++;
		cpte++;

		do
		{
			a = getchar();

			if(a != '-' && a!='\n')
			{
				a = toupper(a);
			}

		}while((a<'A' || a>'Z') && a != '-' && a!='\n');
	}

	*vchar = '\0';

} 





void Afficher_chaine (char *p, int nb, int MAX)

//void Afficher_chaine (Fiche)
{
     char *pi,*pj;
	 //char *p;

//	 int nb;
//	 int MAX;

     for(pi=p;pi<p+nb*MAX;pi+=MAX)
     {
          
          printf("%s",pi);
          printf("  ");
     }
     printf("\n");
}

0
RE:

Afficher_chaine (membre.nom_membre,NOM/*,nb,MAX*/);

La fonction
void Afficher_chaine (char *p, int nb, int MAX)
attend 3 paramètres *p, nb et MAX et tu n'en passe qu'un seul puisque /*,nb,MAX*/ c'est du commentaire

or la fonction a besoin de ces paramètres
for(pi=p;pi<p+nb*MAX;pi+=MAX)
0