Struture en c

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");
}



Configuration: Windows XP
Firefox 2.0.0.12

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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)?
    1. 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
      1. 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 );
        1. 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");
          }
          
          
          1. 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)