Problème copie de tableau en C

Giahuefr -  
shuya89 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

shuya89 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   39
 
ba ton code a l'air bon pourtant mais quel tableau tu souhaite copie dans l'autre
0
Giahuefr
 
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
Giahuefr
 
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
shuya89 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   39
 
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
Giahuefr > shuya89 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention  
 
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;
}




}
0
shuya89 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   39
 
a la place du switch met un for c'est beaucoup mieux essaye
0