Pointeur en c

Résolu
yuri648 Messages postés 785 Statut Membre -  
yuri648 Messages postés 785 Statut Membre -
Bonjour,

j'ai 2 tableau en c sous forme

double *c = (double *) calloc (50, sizeof(double));
double *ress = (double *) calloc (100, sizeof(double));

comment je peux copier le tableau c au tableau ress apartir de la 10 iemme colonnes du tableau ress?

merci

4 réponses

  1. arthurc Messages postés 27 Statut Membre 4
     
    Salut

    avec memcpy:
    void *memcpy(void *dest, const void *src, size_t n);
    0
  2. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
     
    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
    0
  3. yuri648 Messages postés 785 Statut Membre 7
     
    @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
    0
    1. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
       
      Ma proposition fonctionne et celle d'arthurc aussi. Code pour l'exemple :
      #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 ..
      0
  4. yuri648 Messages postés 785 Statut Membre 7
     
    merci mes amis j'ai réglé mon prb c'était au niveau algorithmique
    0