Problème copie de tableau en C
Giahuefr
-
shuya89 Messages postés 483 Statut Membre -
shuya89 Messages postés 483 Statut Membre -
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
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
-
ba ton code a l'air bon pourtant mais quel tableau tu souhaite copie dans l'autre
-
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é-
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- voila 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;
}
}
-
-
a la place du switch met un for c'est beaucoup mieux essaye