Pointeur en c

Résolu
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. Salut

    avec memcpy:
    void *memcpy(void *dest, const void *src, size_t n);
    0
    1. 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
      1. @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. 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
      2. merci mes amis j'ai réglé mon prb c'était au niveau algorithmique
        0