Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Problème avec mes appels de fonction )=
    Bonjour à tous, Je rentre en école d'info cette année et pour ça je me prépare un peu cependant je suis tombé sur un soucis que je n'arrive pas a résoudre seul.
    Je cherche à appeler une fonction nommée intro qui fonctionne ( je l'ai deja testée ). donc je l'ai mise dans son fichier .c ( intro.c) et je souhaite faire en sorte que l'utilisateur rentre une information telle que sa date naissanced puis que le main l'envoie a la fonction intro qui a pour but de l'identifier parmis d'autre profil enregistré puis de le faire apparaitre dans la variabale résultat qui se trouve a la fois dans le main.c et dans le intro.c un chiffre qui correspond a l'utilisateur identifié par la fonction intro.

    ( ma fonction intro fonctionne bien je l'ai déjà testée dans un main directement cependant c'est le fait de l'apeller puis qu'elle renvoie la valeur demandé qui me pose problème )
    si vous aviez un exemple de code pour illustrer quelque chose que je fais mal =) merci d'avance.

  2. #2
    Expert éminent sénior
    Bonjour
    Citation Envoyé par Cinder16 Voir le message
    et je souhaite faire en sorte que l'utilisateur rentre une information telle que sa date naissanced
    Une "date naissanced" ce n'est pas un élément du C. Le C ne connait que les int, les float et les char. Il te faut donc aggréger divers éléments de ces divers types qui ensembles formeront une "date naissanced". L'aggrégation d'éléments se nomme "structure". Par exemple 3 int dans une structure pourront alors représenter un jour, un mois, une année. Ensuite tu peux faire saisir un élément après l'autre pour les combiner en "date naissanced".
    Mais comme les structures ne s'apprennent pas tant que tu ne connais pas au-moins les bases, tu ne peux pas (et ne sais pas) les utiliser. Donc tu crées juste 3 variables "int jj", "int mm" et "int aa" et tu les manipules séparément

    Citation Envoyé par Cinder16 Voir le message
    puis que le main l'envoie a la fonction intro
    Donc si on est à la structure, alors envoi d'une structure. Généralement pour aller plus vite là on préfère envoyer l'adresse car tout envoi d'info à une fonction se fait par recopie et c'est plus rapide de copier une adresse (8 octets) qu'une structure de peut-être 8 milliards d'octets => obligé donc là de connaitre les pointeurs qui sont un des outils les plus importants du C mais qui là aussi ne sont pas vus tant qu'on n'a pas acquis les bases
    Alors on en revient aux 3 variables que tu passes comme argument à ta fonction qui devra les stocker dans 3 paramètres à elle

    Citation Envoyé par Cinder16 Voir le message
    qui a pour but de l'identifier parmis d'autres profils enregistrés
    enregistrés où ? un fichier ? une base de données ? là faut être plus précis. Enfin quoi qu'il en soit, c'est qu'un problème de recherche et comparaison. Si c'est un fichier alors faut lire le fichier (connaitre les outils de lecture de fichier), regarder si la "date naissanced" du fichier est égale à la "date naissanced" de la structure reçue, etc etc. Là aussi on est bien au dessus d'un niveau de débutant en C.

    Citation Envoyé par Cinder16 Voir le message
    puis de le faire apparaitre dans la variabale résultat qui se trouve a la fois dans le main.c et dans le intro.c un chiffre qui correspond a l'utilisateur identifié par la fonction intro.
    "faire apparaitre", tu crois que le C c'est de la magie ? En C les variables situées dans deux fonctions sont totalement indépendantes. Si tu veux qu'une valeur de f1() se retrouve dans une variable de f2(), tu n'as que 3 possibilités
    • f1() renvoie la valeur et f2 la récupère de cette façon var=f1(). C'est la solution la plus simple et la plus efficace, mais qui se limite à une seule valeur (impossible à f1 d'en retourner deux ou trois sauf à passer par une structure mais là on en revient au problème du temps nécessaire à la recopie de la structure)
    • f1() ayant reçu en paramètre l'adresse de la variable de f2, peut alors aller à cette adresse et y stocker ladite valeur => on revient encore aux pointeurs qui là encore ne sont pas au programme quand on n'est pas à l'aise avec les bases
    • la variable est globale, f1 et f2 peuvent donc y accéder. Souvent la solution de facilité utilisée par les débutants, solution qui se paye ensuite au centuple quand leur code est devenu tellement khafi de variables globales dans tous les sens qu'ils ne comprennent eux-même plus rien à ce qui se passe et qui en plus se retrouvent boycottés quand ils arrivent dans le milieu professionnel où cette technique de programmation est très mal vue mais où ils sont coinçés car ils ne savent pas faire autrement


    Citation Envoyé par Cinder16 Voir le message
    ma fonction intro fonctionne bien je l'ai déjà testée dans un main directement cependant c'est le fait de l'apeller puis qu'elle renvoie la valeur demandé qui me pose problème )
    Alors tu ne l'as pas testée. Tester une fonction c'est justement l'appeler avec des arguments précis et regarder si la valeur récupérée correspond à la valeur attendue. Tu ne peux pas dire "je l'ai testée mais je ne sais pas l'appeler" !!!

    Citation Envoyé par Cinder16 Voir le message
    si vous aviez un exemple de code pour illustrer quelque chose que je fais mal =) merci d'avance.
    Non, c'est à toi de montrer ton code pour que nous on voie ce que tu fais mal. Des exemples d'appels de fonctions et de retour de valeur il y en a plein les tutos.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

###raw>template_hook.ano_emploi###