Problème copie de tableau en C

Bonjour,

dans le cadre d'un projet, j'ai créer une sous fonction, dans cet sous fonction, je déclare un tableau, et je copie un autre tableau dans celui ci, je n'ai pas utilisé la fonction memcpy, j'ai utilisé ceci

void lcd_bitmap(char table[]);
{
for(j=0; j<(sizeof(logo1)); j++) table[j] = logo1[j];

mon problème, c'est que les 10 premier octets copié sont erroné, les 1014 restant sont quand a eux, bien copié.

Merci d'avance pour vos réponses

3 réponses

  1. ba ton code a l'air bon pourtant mais quel tableau tu souhaite copie dans l'autre
    0
    1. je souhaite copié logo1 dans table, pour après exploiter table. en fait, j'affiche le tout sur un lcd graphique, et je vois très bien que les 10 premiers octets ne sont pas bon, alors qu'en exploitant directement logo1, tout s'affiche normalement
      0
  2. désolé de faire un double-post, mais je ne trouve pas la fonction éditer, et je me suis trompé, veuillez lire

    void lcd_bitmap();
    {
    char table[]
    for(j=0; j<(sizeof(logo1)); j++) table[j] = logo1[j];

    encore désolé
    0
    1. void lcd_bitmap();
      {

      char table[] ; // il te manque un point virgule la
      for(j=0; j<(sizeof(logo1)); j++)
      {
      table[j] = logo1[j];
      }
      }

      fais voir ton appel de fonction et comment tu créer ton tableaux logo et comment tu le remplit aussi
      0
    2. @shuya89voila donc ce que j'utilise pour afficher le logo, désolé du pavé, mais je ne suis pas vraiment doué en C, je fait avec ce que je sait faire^^

      //ce que je tape dans le main

      lcd_bitmap(1,50,5);

      //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      // Affichage d'un logo
      // num: selection du logo
      // x: position de depart du logo en partant du point en bas a gauche de l'image
      // y: position de depart du logo en partant du point en bas a gauche de l'image
      //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      void lcd_bitmap(char num, char xs, char ys)
      {
      unsigned int i, j, x, y, longueur, largeur, k=0;

      x = xs;
      y = ys;
      switch(num)
      {
      case 1:
      for(j=0; j<(sizeof(logo1)); j++) table[j] = logo1[j];
      longueur = 128;
      largeur = 8;
      break;
      case 2:
      for(j=0; j<(sizeof(logo2)); j++) table[j] = logo2[j];
      longueur = 128;
      largeur = 8;
      break;
      case 3:
      for(j=0; j<(sizeof(logo3)); j++) table[j] = logo3[j];
      longueur = 128;
      largeur = 8;
      break;
      case 4:
      for(j=0; j<(sizeof(logo4)); j++) table[j] = logo4[j];
      longueur = 96;
      largeur = 5;
      break;
      case 5:
      for(j=0; j<(sizeof(logo5)); j++) table[j] = logo5[j];
      longueur = 240;
      largeur = 16;
      break;
      }
      for(k=0; k<(largeur); k++)
      {
      for(i=0; i<longueur; i++)
      {
      if((table[i+k*longueur] & (0b00000001)) == 0b00000001)Lcd_Allume_pixel(x, 127-(y*8));
      if((table[i+k*longueur] & (0b00000010)) == 0b00000010)Lcd_Allume_pixel(x, 126-(y*8));
      if((table[i+k*longueur] & (0b00000100)) == 0b00000100)Lcd_Allume_pixel(x, 125-(y*8));
      if((table[i+k*longueur] & (0b00001000)) == 0b00001000)Lcd_Allume_pixel(x, 124-(y*8));
      if((table[i+k*longueur] & (0b00010000)) == 0b00010000)Lcd_Allume_pixel(x, 123-(y*8));
      if((table[i+k*longueur] & (0b00100000)) == 0b00100000)Lcd_Allume_pixel(x, 122-(y*8));
      if((table[i+k*longueur] & (0b01000000)) == 0b01000000)Lcd_Allume_pixel(x, 121-(y*8));
      if((table[i+k*longueur] & (0b10000000)) == 0b10000000)Lcd_Allume_pixel(x, 120-(y*8));
      x++;
      if(x>=(longueur+xs))x=xs;
      }
      y++;
      if(y>=(largeur + ys)) y=ys;
      }

      }
      0
  3. a la place du switch met un for c'est beaucoup mieux essaye
    0