[C] pouvez vs trouver les erreurs ds mon prog svp

adi -  
sam3000 Messages postés 1226 Statut Membre -
bonjour voila mon prog a kelke souci k g ne trouve pas elasss pourier vs maider à les trouvers car je me tappe la tete contre les murs la merci!! d'avance

// definition des librairies
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

// 4.1 les structures de données
// définition des nouveaux types
typedef unsigned char byte; // pour un caractère
typedef unsigned short int word; // pour un mot de 2 octets
typedef unsigned long int dword; // pour un mot de 4 octets

// définitions des structures

// strucutre en-tete de fichier :
typedef struct
{
byte signature[2];
dword taille_du_fichier, champs_inconnu, offset_image, version;
}BMP_Header;

// structure en-tete de l'image version 4
typedef struct
{
word nbre_plan, bit_pixel;
dword L_image, H_image, compression, taille_image, resol_horiz, resol_vert, nbr_couleur, nbr_couleur_import;
}BitMapHeaderVersion4;

//déclaration des sous programmes
int LitHeader (BMP_Header *enreg);

//4.2 Lecture de l'en-tete de fichier
int LitHeader (BMP_Header *enreg)
{
char signature[2];
int taille_du_fichier;
int champs_inconnu;
int offset_image;
int version;
int i;

fread(&signature,1,2,IN); // lecture du type de l'image
for(i=0;i<2;i++){
enreg->signature[i]=signature[i];
}

fread(&taille_du_fichier,4,1,IN); // lecture de la taille de l'image
enreg->taille_du_fichier=taille_du_fichier;

fread(&champs_inconnu,4,1,IN); // lecture du champs inconuu
enreg->champs_inconnu=champs_inconnu;

fread(&offset_image,4,1,IN); // lecture de l'offset
enreg->offset_image=offset_image;

fread(&version,4,1,IN); // lecture de la version de l'image Bmp
enreg->version=version;

printf(" signature: %c%c \n taille_du_fichier: %d \n champs_inconnu: %d \n offset_de_l'image: %d \n"
,enreg->signature[0],enreg->signature[1],enreg->taille_du_fichier,enreg->champs_inconnu,enreg->offset_image);

if(strncmp(signature,"BM",2)) //si l'image corespond a un point Bmp on retourne 1 sinon 0
{
return 1;
}
else
{
return 0;
}
} //fin de la lecture du fichier d'en-tete
FILE *IN;
//programme principal

int main(void)
{

int *enreg;
char *nom_fichier;

//ouverture du fichier
strcpy (nom_fichier,"ROCKET.bmp");
if ((IN = fopen (nom_fichier,"rb"))==NULL){
printf("ERREUR d'ouverture du fichier %s\n",nom_fichier);
exit(-1);
}

LitHeader();

if (return = 0)
{
printf("ce n'est pas une image de type Bmp \n");
system("pause");
}
else
{
printf("c'est une image de type Bmp \n");
}

getchar();
}

10 réponses

  1. m0n0-le-14r3 Messages postés 174 Statut Membre 17
     
    c quoi exactement lez probleme??
    0
  2. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    oui
    0
    1. adi
       
      ouai g essayer votre technik ca marche pas...lol
      a++
      0
  3. adi
     
    a lon aviis c un probleme de declaration de sous programme et g pense kil y a aussi un prob a l'appel mais g ne voi pas commen le regler enfin jy arriv pas koi
    0
  4. m0n0-le-14r3 Messages postés 174 Statut Membre 17
     
    nbon la question est :
    " Qu'est ce que le compilateur te met comme message d'erreur?? "
    ;)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fozzie
     
    je n'ai pas tout suivi mais en regardant juste cette ligne, elle ne correspond pas au commentaire :

    if(strncmp(signature,"BM",2)) //si l'image corespond a un point Bmp on retourne 1 sinon 0

    c'est faux,
    il manque le ! (la fonction strncmp retourne 0 si ok, donc on passe dans le "else" si on ne met pas le !) :
    if(!strncmp(signature,"BM",2))
    0
  7. fozzie
     
    aussi :
    remplacer
    if (return = 0)
    par
    if (return == 0)
    sinon, le résultat est toujours 0.
    = assignation
    == comparaison

    c'est le jeu des 7 erreurs ?
    0
  8. fozzie
     
    du coup, je dis n'importe quoi, désollé.
    faire :

    int ret = 0;

    ret = LitHeader();

    if (ret == 0)
    0
  9. TLa Messages postés 57 Statut Membre 12
     
    1)
    char *nom_fichier;
    //ouverture du fichier
    strcpy (nom_fichier,"ROCKET.bmp"); 


    nom_fichier pointe sur on sait pas quoi -> jardinage mémoire

    faire :
     //ouverture du fichier
    if ((IN = fopen ("ROCKET.bmp","rb"))==NULL){
    ...
    
    0
  10. sam3000 Messages postés 1226 Statut Membre 144
     
    Puisqu'on ne connais pas sous quel C tu programme, les INTs ne sont pas forcement des DWORD,
    donc le fait de fair des fread avec une taille de 4 avec des variables int, est à vérifier!
    utilise les sizeof() en cas de doute, et des variables "dword" à l'interieur du programme, en adaptant la definition des dword selon ton environnement C
    0