Questions sur les fonctions en C

cissine Messages postés 16 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 21 mai 2010 - 25 avril 2009 à 18:22
cissine Messages postés 16 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 21 mai 2010 - 29 avril 2009 à 13:41
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 avril 2009 à 22:57
<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>
0
cissine Messages postés 16 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 21 mai 2010
27 avril 2009 à 13:34
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 ?
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
27 avril 2009 à 14:19
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
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
28 avril 2009 à 20:53
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 ...!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cissine Messages postés 16 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 21 mai 2010
29 avril 2009 à 13:41
Salut,
Merci beaucoup pour tes réponse nickydaquick.
0
Rejoignez-nous