Pointeur vers une fonction ayant un paramètre un char

Résolu
fire3d Messages postés 15 Statut Membre -  
fire3d Messages postés 15 Statut Membre -
Bonjour :)

J'essaye de pointé un fonction putstr comme cela dans mon main-->

#include <unistd.h>

void    ft_putchar(char c)
{
    write(1, &c, 1);
}

void    ft_putstr(char *str)
{
    int     i;

    i = 0;
    while (str[i] != '\0')
    {
        ft_putchar(str[i]);
        i = i + 1;
    }
}

int     main(void)
{
    void    (*k)(*char);  
    k = &ft_putstr;
    k("Exemple");
    return (0);
}
>

Mais ça ne fonctionne pas :(

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut fire3d,

    Ton problème n'est pas que cela ne "fonctionne pas", c'est que cela ne compile pas en raison d'une syntaxe erronée :

    gcc -Wall fire3d.c
    fire3d.c: In function 'main':
    fire3d.c:22:18: error: expected declaration specifiers or '...' before '*' token
    fire3d.c:23:5: error: 'k' undeclared (first use in this function)
    fire3d.c:23:5: note: each undeclared identifier is reported only once for each function it appears in
    fire3d.c:24:5: warning: implicit declaration of function 'k' [-Wimplicit-function-declaration]

    ton pointeur k est mal déclaré (le type de l'argument est faux, en C le type "pointeur sur char s'écrit
    char *
    et pas ce que tu as écrit).

    Tu as des explications pas à pas et de nombreux exemples là :

    http://fr.openclassrooms.com/informatique/cours/les-pointeurs-sur-fonctions-1

    Pour ton affectation, le & n'est pas nécessaire, l'identifiant de la fonction suffit.

    Pour l'appel de fonction, il est plus clair de l'appeler de cette façon :
    (*k)("Exemple\n");
    pour qu'à la lecture de ton code on voie directement qu'il s'agit d'un appel à un pointeur sur une fonction.

    Dal
    1
    1. fire3d Messages postés 15 Statut Membre 1
       
      Merci ça compile ! ;)
      0