[C] pouvez vs trouver les erreurs ds mon prog svp
adi
-
sam3000 Messages postés 1225 Date d'inscription Statut Membre Dernière intervention -
sam3000 Messages postés 1225 Date d'inscription Statut Membre Dernière intervention -
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();
}
// 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();
}
A voir également:
- [C] pouvez vs trouver les erreurs ds mon prog svp
- Trouver adresse mac - Guide
- Ou trouver mon adresse ip - Guide
- Udp vs tcp - Guide
- Trouver mon adresse exacte - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
10 réponses
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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))
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))
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 ?
remplacer
if (return = 0)
par
if (return == 0)
sinon, le résultat est toujours 0.
= assignation
== comparaison
c'est le jeu des 7 erreurs ?
1)
nom_fichier pointe sur on sait pas quoi -> jardinage mémoire
faire :
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){ ...
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
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