[C] copier un tableau [Résolu/Fermé]

Signaler
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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

13 réponses

Messages postés
55
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
22 septembre 2008
39
tu peux utiliser la fonction memcpy()
#include <string.h>

int Tab1[10], Tab2[10];

memcpy(Tab2, Tab1, sizeof Tab2);
26
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

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é)
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 749
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
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
Ben oui, j'oublie le plus important...
C'est du langage C
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
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]);
}
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
Vraiment personne pour m'expliquer?????
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
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?
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
on ne sait jamais, quelqu'un qui veille la nuit?????
J'ai toujours pas trouvé mon erreur....


Merci d'avance
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
salut,
merci poour ta réponse...
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
salut,
merci poour ta réponse
Messages postés
55
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
22 septembre 2008
39
De quel langage parlons nous?
peux tu nous en dire un peu plus
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
137
re,
à quoi sert le sizeof? et memcpy?
Je connais strcpy, quelle est la différence?

Merci d'avance pour tes axplications
Messages postés
55
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
22 septembre 2008
39
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...
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 749
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.
bonjour voila un programme pour copier le contenu de deux tableaux sur un troiseme tableau pour c++ et merci d'avance;

#include<iostream>
#include<iomanip>
using namespace std;
main()
{

int B[]{7,-5,18,35,7,24},C[]{51,33,78,35,90},A[11];
int x,j,i,compt,n;

for(i=0;i<11;i++)
{for(j=0,n=0;j<11;j++)
{A[j]=C[n];n++;}cout<<"A["<<i<<"]="<<A[i]<<endl;
}}
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 749
Yep mais ce n'est pas le langage demandé. Enfin ça date de 8 ans :)