Pointeur en c
Résolu/Fermé
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
-
25 févr. 2011 à 17:02
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 25 févr. 2011 à 21:35
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 25 févr. 2011 à 21:35
4 réponses
arthurc
Messages postés
26
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
25 mars 2011
4
25 févr. 2011 à 17:26
25 févr. 2011 à 17:26
Salut
avec memcpy:
avec memcpy:
void *memcpy(void *dest, const void *src, size_t n);
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 25/02/2011 à 17:33
Modifié par Hxyp le 25/02/2011 à 17:33
Bonjour,
ça donne c[50] et ress[100]
int i;
for(i=0;i<50;i++) ress[i+10]=c[i];
un truc comme ça
ça donne c[50] et ress[100]
int i;
for(i=0;i<50;i++) ress[i+10]=c[i];
un truc comme ça
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
25 févr. 2011 à 17:49
25 févr. 2011 à 17:49
@Hxyp j'ai essayé comme tu m'a dit elle n'a pas marché
@arthurc j'ai essayé comsa mais s'a marche pas
memcpy(ress+10, c, sizeof(double));
merci bcp mes amis
@arthurc j'ai essayé comsa mais s'a marche pas
memcpy(ress+10, c, sizeof(double));
merci bcp mes amis
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 25/02/2011 à 21:25
Modifié par Hxyp le 25/02/2011 à 21:25
Ma proposition fonctionne et celle d'arthurc aussi. Code pour l'exemple :
edit : correction d'une bêtise ..
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*test1 utilisant une boucle*/
void test1()
{
double *c=calloc(50,sizeof(double));
double *ress=calloc(100,sizeof(double));
int i;
//remplissage de c 1-50 :
for(i=0;i<50;i++)c[i]=(double)i+1;
//copy de c dans ress a partir de la 10e valeur de ress :
for(i=0;i<50;i++)ress[i+10]=c[i];
//affichage de ress :
for(i=0;i<100;i++)printf("ress[%d]=%f\n",i,ress[i]);
free(c);
free(ress);
}
/*test2 utilisant memcpy*/
void test2()
{
double *c=calloc(50,sizeof(double));
double *ress=calloc(100,sizeof(double));
double *ptr;
int i;
ptr=&ress[10];//ptr pointe à partir de l'adresse ress[10] donc ptr[0]==ress[10]
//remplissage de c 1-50 :
for(i=0;i<50;i++)c[i]=(double)i+1;
//copy de c dans ress a partir de la 10e valeur de ress :
memcpy(ptr,c,50*sizeof(double));
//affichage de ress :
for(i=0;i<100;i++)printf("ress[%d]=%f\n",i,ress[i]);
free(c);
free(ress);
}
int main()
{
printf("test1 :\n");
test1();
printf("test2 :\n");
test2();
return EXIT_SUCCESS;
}
edit : correction d'une bêtise ..
yuri648
Messages postés
677
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2015
7
25 févr. 2011 à 21:35
25 févr. 2011 à 21:35
merci mes amis j'ai réglé mon prb c'était au niveau algorithmique