Problème copie de tableau en C

Fermé
Giahuefr - 22 mai 2008 à 10:54
shuya89 Messages postés 470 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014 - 22 mai 2008 à 11:54
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 jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014 39
22 mai 2008 à 10:58
ba ton code a l'air bon pourtant mais quel tableau tu souhaite copie dans l'autre
0
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
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 jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014 39
22 mai 2008 à 11:03
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 jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014
22 mai 2008 à 11:51
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 jeudi 22 mai 2008 Statut Membre Dernière intervention 28 novembre 2014 39
22 mai 2008 à 11:54
a la place du switch met un for c'est beaucoup mieux essaye
0