Création
d'entreprise
Posez votre question Signaler

[C] copier un tableau [Résolu]

limbergh 650Messages postés 8 juillet 2007Date d'inscription 29 juin 2010Dernière intervention - Dernière réponse le 20 juin 2010 à 17:20
Bonjour,
j'ai un code avec des foncstions, le but est de remplir un tableau, avec des chiffres, puis afficher,... et enfin
le copier dans un autre tableau.
Je ne vois pas comment faire, j'ai essayé avec une fonction et ça ne donne rien.
Si quelqu'un à une explications...
Merci d'avance
Lire la suite 

[C] copier un tableau »

14 réponses
Réponse
+10
moins plus
tu peux utiliser la fonction memcpy()
#include <string.h>

int Tab1[10], Tab2[10];

memcpy(Tab2, Tab1, sizeof Tab2);
Nooka - 20 juin 2010 à 17:20
Oua! merci pour ta réponse, memcpy est non seulement pratique mais en plus extrêmement rapide comparée à la création d'une boucle for. je suis sur la programmation sur DS, et cette fonction m'a sauvé la vie XD (comme la console n'est pas une bête de calcule c'est un gain de temps bien apprécié)
Ajouter un commentaire
Réponse
+1
moins plus
ps: voici le code

#include <stdio.h>
#include <stdlib.h>
#define tmax 5
//prototypages des fonctions
void affiche(long *tbis, long tmaxbis);
void encode(long *tbis, long tmaxbis);
void somme(long *tbis, long tmaxbis);
void moyenne(long *tbis, long tmaxbis);
void copie(long *tbis, long *tbis2, long tmaxbis);

int main(int argc, char *argv[]) 
{
//déclarations des variables
long t[tmax]={0};
long t2[tmax]={0};

encode(t,tmax);
affiche(t, tmax);
somme(t, tmax);
moyenne(t, tmax);
copie(t,t2, tmax);
 
system("PAUSE");
    return 0;
}

/*fonction affichage*/
void affiche(long *tbis, long tmaxbis)
{
int ibis;
for (ibis=0; ibis<tmaxbis; ibis++)
{
printf("%ld\t", tbis[ibis]);
}
}

/*fonction encodage*/
void encode(long *tbis, long tmaxbis)
{
int ibis;
for (ibis=0; ibis<tmax; ibis++)
{
printf("entrez un nombre du tableau t [%d] :",ibis);
scanf("%ld", &tbis[ibis]);
}
}

void somme(long *tbis, long tmaxbis)
{
int ibis, s;
s=0;
for(ibis=0; ibis<tmaxbis; ibis++)

s=s+tbis[ibis];
printf("\nla somme des valeurs du tableau est : %d\n", s);

}

void moyenne(long *tbis, long tmaxbis)
{
int ibis, s , m;
s=0;
for(ibis=0; ibis<tmaxbis; ibis++)

s=s+tbis[ibis];
m=s/tmax;
printf("\nla moyenne des valeurs du tableau est : %d\n\n", m);
}

void copie(long *tbis, long *tbis2, long tmaxbis)
{
int ibis;
for (ibis=0;ibis<tmaxbis;ibis++)
tbis2[ibis]=tbis[ibis];

printf("valeurs de table 2 : %ld\n", tbis2[ibis]);
}
Ajouter un commentaire
Réponse
+1
moins plus
Ben oui, j'oublie le plus important...
C'est du langage C
Ajouter un commentaire
Réponse
+1
moins plus
Vraiment personne pour m'expliquer?????
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

Il n'y a pas d'erreur de copie, ça marche très bien.
Cependant, il serait mieux de faire :
void copie(long *tbis, long *tbis2, long tmaxbis)
{
int ibis;
for (ibis=0;ibis<tmaxbis;ibis++){
   tbis2[ibis]=tbis[ibis];

    printf("valeurs de table 2 : %ld\n", tbis2[ibis]);
  }
}

Sinon tu n'afficheras qu'une valeur de ta table tbis2
Ajouter un commentaire
Réponse
+1
moins plus
salut,
merci poour ta réponse
Ajouter un commentaire
Réponse
+0
moins plus
De quel langage parlons nous?
peux tu nous en dire un peu plus
Ajouter un commentaire
Réponse
+0
moins plus
re,
à quoi sert le sizeof? et memcpy?
Je connais strcpy, quelle est la différence?

Merci d'avance pour tes axplications
Ajouter un commentaire
Réponse
+0
moins plus
la fontion strcpy c'est pour copier un chaine dans un autre tandi que memcpy admet trois paramètres, le premier étant le tableau de destination et le deuxième le tableau source. Enfin, le troisième est le nombre d'octets à copier...
fiddy- 9 févr. 2008 à 02:20
Salut,
Tu confonds memcpy strncpy.
memcpy(void *dest, const void *src, size_t n) et strcpy(char *dest, const char *src, size_t n);

memcpy permet de copier des octets depuis la zone mémoire.
Ajouter un commentaire
Réponse
+0
moins plus
ok,
merci pour tes explications, mais pour la fonction copie que j'ai crée, tu ne sais pas
m'expliquer mon erreur de copie avec les pointeurs?
Ajouter un commentaire
Réponse
+0
moins plus
on ne sait jamais, quelqu'un qui veille la nuit?????
J'ai toujours pas trouvé mon erreur....


Merci d'avance
Ajouter un commentaire
Réponse
+0
moins plus
salut,
merci poour ta réponse...
Ajouter un commentaire
Ce document intitulé « [C] copier un tableau » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?