Posez votre question Signaler

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

adi - Dernière réponse le 13 mai 2005 à 14:22
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();
}
Lire la suite 

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

Suggestions
11 réponses
Réponse
+0
moins plus
c quoi exactement lez probleme??
Ajouter un commentaire
Réponse
+0
moins plus
oui
adi - 12 mai 2005 à 16:52
ouai g essayer votre technik ca marche pas...lol
a++
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
nbon la question est :
" Qu'est ce que le compilateur te met comme message d'erreur?? "
;)
Ajouter un commentaire
Réponse
+0
moins plus
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))
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
du coup, je dis n'importe quoi, désollé.
faire :

int ret = 0;

ret = LitHeader();

if (ret == 0)
Ajouter un commentaire
Réponse
+0
moins plus
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){
...
Ajouter un commentaire
Réponse
+0
moins plus
elle est pas mal non plus celle là
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « [C] pouvez vs trouver les erreurs ds mon prog svp » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?