Questions sur les fonctions en C

Signaler
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010
-
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010
-
1. Les déclarations de fonctions se passent du libellé de l'identifiant de leurs arguments : pourquoi ?

2. fscanf(f,"%d %d %d %d",&haut,&droit,&bas,&gauche)!=4){
   Pourquoi les variables "haut", "bas", "droit" et "gauche" sont elles de type int alors que leurs valeurs se codent sur un char ?
           
3. char *chemin="T:SupportCours/Rep";
    bmp_header entete_bmp;
   
    ecrire_bmp(chemin,&entete_bmp,piece,p)!=0)
          
     Pourquoi "&" devant "entete_bmp" et pas devant "chemin" ?

4. image[numero]=(unsigned char *) malloc (header->taille_image);
    Pourquoi "malloc (sizeof(unsigned char)*header->taille_image))" n'est il pas nécessaire ?

et merci à vous .

5 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
<ol>
<li>
Sais pas.

</li>
<li>
fscanf te récupère un int à partir du contenu d'un fichier. C'est à toi de convertir ensuite.</li>
<li>Chemin est déjà un pointeur. Quand tu fais char* Chemin = "c:\\abcd.bmp", tu crées un pointeur contenant l'adresse de la chaine "c:\\abcd.bmp" (qui se trouve dans le segment BSS, si je me plante pas ).</li>
<li>
sizeof(unsigned char) = 1. A la compilation, ta ligne deviendra malloc(1*header->taille_image)).</li>
</ol>
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010

Merci pour tes réponse ça m'a beaucoup aidé,
je veux aussi savoir si on a  char * tab[];  
chaine = tab[1]   pointe sur la deuxième chaine de caractère de chaine ?
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Prenons l'exemple suivant:
char *P; //pointeur
char tab[20]="Bonjours";

si tu fais P=tab;   //alors P point sur le premier caractère de tab soit 'B'
si tu fais P=tab[1];  //alors P pointe sur le deuxième caractère 'o'
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Salut,

question 1, c'est ce qu'on appelle une signature de fonction: tu renseignes le nombre et le type d'arguments ainsi que le type de retour.

post 2: c'est exact. char* tab[] est un tableau de chaines de caracteres. tab[1] te retournes la deuxieme chaine de caracteres dans le tableau.

bonne continuation

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010

Salut,
Merci beaucoup pour tes réponse nickydaquick.