Pointeur vers une fonction ayant un paramètre un char

Résolu/Fermé
fire3d Messages postés 12 Date d'inscription samedi 1 septembre 2012 Statut Membre Dernière intervention 11 août 2015 - 9 sept. 2014 à 17:41
fire3d Messages postés 12 Date d'inscription samedi 1 septembre 2012 Statut Membre Dernière intervention 11 août 2015 - 9 sept. 2014 à 18:50
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 :(
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 9/09/2014 à 18:43
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
fire3d Messages postés 12 Date d'inscription samedi 1 septembre 2012 Statut Membre Dernière intervention 11 août 2015 1
9 sept. 2014 à 18:50
Merci ça compile ! ;)
0