begin process at 2012 05 29 01:49:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

en C comment copier un enregistrement dans un tableau de char


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

en C comment copier un enregistrement dans un tableau de char

samedi 11 février 2006 à 00:08:01 | en C comment copier un enregistrement dans un tableau de char

themahg

ThemahG, Japon toujours!

Aidez moi svp, j'ai un probleme dans mon prog, g n'arrive pas à copier dans un tableau à 2 dimension l'enregistrement d'une structure. Voici le code du prog:

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

typedef struct membre {
    char categorie;
    char nom[20];
    char prenom[20];
    char adrese[60];
    int niveau;
    int cotisation;
}MEMBRE;


int encod_memb(membre *,int );
void affich_memb(membre *,int);
char* cree_tableau(membre*,char[][41] ,int);
void aff_index(char[][41],int [],int);
int* indexation(char[][41],int[] ,int,int);
int tri_insertion(int[],int);


void main()
{
    //declaration et initialisation
    MEMBRE karate[10],*pkarate;
    int nmembre=0,i=0,a;
    int nadulte=0;
    int nenfant=0;
    int indexe[10],*pindexe;
    char data[10][41],*pdata;
    pkarate=&karate[0];
    pdata=&data[0][0];
    pindexe=&indexe[0];
   

        printf("\n\tGESTION D'UN CLUB DE KARATE \n");
        printf("\n\t=========================== \n");
    do
    {
      a=encod_memb(&karate[i],i);    /* Encoder jusqu'a ce que la fct<-0 et i=10 */
      pdata=cree_tableau(pkarate,data,nmembre);
      if(a!=0)
      {
            i++;
            nmembre=i;
          if(pkarate->categorie=='A')
        {
            nadulte=nadulte+1;
        }
        else
            if(pkarate->categorie=='E')
            {
                nenfant=nenfant+1;
            }
      }
    }
    while(nmembre<10 && a!=0);
    {
    }
        /* Mis a jour du  nbre d'element
    nenfant=*pnenfant;    /* Mis a jour du  nbre d'enfant 
    nadulte=*pnadulte;    /* Mis a jour du  nbre d'adulte  */

    affich_memb(pkarate,nmembre);
   
    pindexe=indexation(data,indexe,nadulte,nenfant);
    aff_index(data,indexe,nmembre);
    printf("\n");
   
    printf("\n");
}

// ___fct encod_memb____________
int encod_memb(MEMBRE *pkarate ,int i)
{
    int a,c;
    printf("\n \n\tEncoder  le membre n° %d ",i+1);
    printf("\n\tEncoder  LA CATEGORIE du membre  n° %d:",i+1);
    fflush(stdin);
    pkarate->categorie=toupper(getchar());
   
    // verifier le nbre d'enfant ou adulte
    if(pkarate->categorie=='\n')
    {
        a=0;
        return a;
    }
   
    printf("\n\tEncoder  LE NOM du membre  n° %d:",i+1);
    fflush(stdin);
    gets(pkarate->nom);

    printf("\n\tEncoder  LE PRENOM du membre  n° %d:",i+1);
    fflush(stdin);
    gets(pkarate->prenom);

    printf("\n\tEncoder  L'ADDRESSE du membre  n° %d:",i+1);
    fflush(stdin);
    gets(pkarate->adrese);

    printf("\n\tEncoder  LE NIVEAU du membre  ( 1,2,3 ? ) n° %d:",i+1);
    fflush(stdin);
    scanf("%d",&c);
    pkarate->niveau=c;

    // verification de la cotisation
    if(pkarate->categorie=='A')
    {
        if( pkarate->niveau==1)
        {
        pkarate->cotisation=20;
        }
        else
            if( pkarate->niveau==2)
            {
                pkarate->cotisation=22;
            }
            else
                {
                    pkarate->cotisation=24;
                }
    }
    else
        if(pkarate->categorie=='E' )
        {
            if( pkarate->niveau==1)
            {
              pkarate->cotisation=10;
            }
            else
                if( pkarate->niveau==2)
                {
                    pkarate->cotisation=12;
                }
                else
                {
                    pkarate->cotisation=14;
                }
        }
                //verification de la touche Enter
    if(pkarate->categorie!='\n')
    {
        a=1;
    }
    else
    {
        a=0;
    }
        return a;
}
///////////////////// creation du tableau
char* cree_tableau(MEMBRE *pkarate, char  data[][41],int nmembre)
{
    int i,j,ncomax=41;
    char tmp[41];

    // sauvegarde dans un vecteur temporaire
    for(i=0;i<nmembre;i++)
    {
            tmp[i]=pkarate->categorie;
            strncpy(&tmp[i+1],pkarate->nom,strlen(pkarate->nom+1));
            strcat(&tmp[strlen(pkarate->nom)],pkarate->prenom);
           
    }
    for(j=0;j<nmembre;j++)
        {
            printf("  %c    %s     ",tmp[j],tmp[j]);
        }
    //*******************************
    for(i=0;i<nmembre;i++)
    {  
        for(j=0;j<ncomax;j++)
        {      
            strcpy((&data[i][j]),&tmp[i]);   
        }
   
    }
    return &data[0][0];
   
   
}
//////////////////////////////// INDEXATION/////////////////////////////////////
int* indexation(char data[][41],int indexe[],int nadulte,int nenfant)
{
    int i,j,n;
    n=nadulte+nenfant;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(data[i][j]>=data[i+1][j])
            {
                if(strcmp(&data[i][j+1],&data[i+1][j+1])<=0)
                {
                    indexe[i]=i;
                }
                else
                {
                    indexe[i]=i+1;
                }
                indexe[i]=(indexe,nadulte);
            }
            else
            {
                if(strcmp(&data[i][j+1],&data[i+1][j+1])<=0)
                {
                    indexe[nenfant]=i;
                }
                else
                {
                    indexe[nenfant]=i+1;
                }
                indexe[i]=(indexe,nenfant);
            }
        }
           
    }
return indexe;
}
///////affiche index /////////////////////////////////
void aff_index(char data[][41],int indexe[],int nmembre)
{
    int i,j;
   
    for(i=0;i<nmembre;i++)
    {
        for(j=0;j<1;j++)
        {
            printf(" %c  %s    %s     ",data,data[indexe[i]][j]);
        }
    }

}
////////////////////////////////////////////
void affich_memb( membre *pkarate,int nmembre)
{
    int i=0;
    while(i<nmembre)
    {
        printf("\n %c ",pkarate->categorie);
        printf("\n %s ",pkarate->nom);
        printf("\n %s ",pkarate->prenom);
        printf("\n %s ",pkarate->adrese);
        printf("\n %d ",pkarate->niveau);
        printf("\n %d ",pkarate->cotisation);
    i++;pkarate++;
    }

}
//==================================
int tri_insertion(int indexe[],int nmembre)
{
    int i,j=0,res;
   
    for(j=1;j<nmembre;j++)
    {
        i=j-1;
        res=indexe[j];
        while(indexe[i]>res)
        {
            indexe[i+1]=indexe[i];
            i=i-1;
        }
        indexe[i+1]=res;
        return indexe[i];
    }
        return indexe[j];
}
samedi 11 février 2006 à 00:26:38 | Re : en C comment copier un enregistrement dans un tableau de char

bouba

Tu colles 200 lignes de code alors que ta question concerne seulement un dixaine de celles-ci. Perso ça ne me donne pas trop envi de chercher ou est le problème dans ton prog !!! Passes plutôt seulement la partie de code ou tu essais de faire la copie.
samedi 11 février 2006 à 00:57:15 | Re : en C comment copier un enregistrement dans un tableau de char

themahg

ThemahG, Japon toujours!

voici la parti du code qui concerne  la copie:

char* cree_tableau(MEMBRE *pkarate, char  data[][41],int nmembre)
{
    int i,j,ncomax=41;
    char tmp[41];

    // sauvegarde dans un vecteur temporaire
    for(i=0;i<nmembre;i++)
    {
            tmp[i]=pkarate->categorie;
            strncpy(&tmp[i+1],pkarate->nom,strlen(pkarate->nom+1));
            strcat(&tmp[strlen(pkarate->nom)],pkarate->prenom);
           
    }
    for(j=0;j<nmembre;j++)
        {
            printf("  %c    %s     ",tmp[j],tmp[j]);
        }
    //*******************************
    for(i=0;i<nmembre;i++)
    {  
        for(j=0;j<ncomax;j++)
        {      
            strcpy((&data[i][j]),&tmp[i]);   
        }
   
    }
    return &data[0][0];
   
   
}

samedi 11 février 2006 à 12:46:45 | Re : en C comment copier un enregistrement dans un tableau de char

wxccxw

Membre Club
je vois pas ou est le probleme :)
lundi 13 février 2006 à 17:15:49 | Re : en C comment copier un enregistrement dans un tableau de char

bouba

Hum, c'est bizar ton code. // sauvegarde dans un vecteur temporaire 1. for(i=0;icategorie; 3. strncpy(&tmp[i+1],pkarate->nom,strlen(pkarate->nom+1)); 4. strcat(&tmp[strlen(pkarate->nom)],pkarate->prenom); 5.} ligne 1, supposons nmembre=3 Au premier passage de boucle (OK, pas tout à fait car strlen(pkarate->nom+1) = 19, je pense que tu voulais plutôt faire strlen(pkarate->nom) + 1) Bref au second passage tmp[1] = pkarate->categorie ???? c'est moi ou c'est pas ce que tu voulais faire ? Imaginons que tu as 2 membres categorie1 = a nom1 = pierre prenom1 = ttt categorie2 = a nom2 = paul prenom2 = xxx au premier passage dans tmp on a apierrttt au final dans tmp tu as donc aapaxxxtt Es-tu sûr que c'est bien ce que tu voulez faire ?? La sauvagarde dans un "vecteur temporaire" n'est vraiment pas utile, pourquoi ne pas copier directement les données ? Ou alors j'ai peut-être rien pigé !


Cette discussion est classée dans : int, data, printf, indexe, pkarate


Répondre à ce message

Sujets en rapport avec ce message

Probleme de reception dans un serveur visual C++ pour windows [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi.voici les source du client et du serveurLe Serveur Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois Bitwise... [ par MeltedMind ] Wise ou not wise là est la question.Je me demandais... sur le fonctionnement primaire de nos petites machines. 1+ 1 = 10, c'est bien connu mais comme demande de correction de programme [ par gemini010 ] slt a tous, je dois créer un programme avec differente fonctions et structures permettant de gerer des etudiants ( on doit pouvoir ajouter des enregis sturnarbo [ par sturnarbo ] ENONCE:/*Ecrire un programme qui range les éléments d'un tableau A du type int dansl'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et u aide pour une liaison serie [ par punch95 ] J'ai trouvé un source c pour une liaison serie d'un beck sc12 et j'aimerai que l'on me commente le source si c possible merci./*********************** verif CRC16 [ par sena ] Bonjour,voila j'ai un pti prog pour calculer le CRC16.Je voudrai savoir si kelkun pouvait me dire si ce code fonctionne merci. Car je n'ai qu'un seul vc++ : pb d'ecriture dans fichier taille sup a prévu [ par adidmamah ] g un groooooo pb qui m'épate sincerementj'ecris dans un fichier en utilisant un structure : struct data { char nom[30]; concatenation [ par asmv ] //a partir d'elements de tableau 'int' transformes en 'char'//essai de concatenation qui ne fonctionne pas pourquoi ?//merci pour votre aide#include #


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales