Besoin reponse sur les fonction avec structures et pointeur
out49
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
out49 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
out49 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Salut.
Je suis débutant, et j'ai des questions par rapport à un programme en C : j'aimerais savoir comment utiliser le mot clé
Exemple :
C'est ainsi j'ai fait, mais ça ne marche pas. Donc s'il vous plaît, pouvez-vous m'éclairer sur ce point (mon probleme c'est sur la partie du pointeur avec un void) ?
Je suis débutant, et j'ai des questions par rapport à un programme en C : j'aimerais savoir comment utiliser le mot clé
void. Si je veux utiliser
voidavec un pointeur, comment serait mon
scanf?
Exemple :
void struct_etudiant(stud *etd) { printf("nom\n"); scanf("%s", etd->nom); }
C'est ainsi j'ai fait, mais ça ne marche pas. Donc s'il vous plaît, pouvez-vous m'éclairer sur ce point (mon probleme c'est sur la partie du pointeur avec un void) ?
A voir également:
- Besoin reponse sur les fonction avec structures et pointeur
- Fonction si et - Guide
- Réponse automatique thunderbird - Guide
- Réponse automatique gmail - Guide
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
2 réponses
Bonjour
Voici un programme qui répond à ta question :
... ce qui donne à l'exécution :
Bonne chance
Voici un programme qui répond à ta question :
#include <stdio.h> typedef struct etudiant { char nom[20]; char prenom[20]; } etudiant_t; void etudiant_prompt(etudiant_t * etudiant) { printf("nom?\n"); scanf("%s", etudiant->nom); printf("prenom?\n"); scanf("%s", etudiant->prenom); } void etudiant_print(const etudiant_t * etudiant) { printf( "nom: %s\nprenom: %s\n", etudiant->nom, etudiant->prenom ); } int main() { etudiant_t etudiant; etudiant_prompt(&etudiant); etudiant_print(&etudiant); return 0; }
... ce qui donne à l'exécution :
(mando@aldur) (~) $ gcc plop.c
(mando@aldur) (~) $ ./a.out
nom?
toto
prenom?
titi
nom: toto
prenom: titi
Bonne chance
out49
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
mrci beaucoup... je vois mieux
Salut out49,
1.
Je ne suis pas sûr de saisir ce que tu veux veut dire lorsque tu t'interroges sur "utiliser void avec un pointeur, comment serait mon scanf ?" et "mon probleme c'est sur la partie du pointeur avec un void".
La seule utilisation de
En revanche, une fonction qui retournerait une valeur, par exemple
Donc, dans ton code,
2.
Maintenant, il existe aussi en C des pointeurs sur
Par exemple :
Ces pointeurs sur
La fonction standard C
http://www.cplusplus.com/reference/cstdlib/qsort/
(vois l'exemple)
Tu n'as pas vraiment besoin d'utiliser des pointeurs sur
Dal
1.
Je ne suis pas sûr de saisir ce que tu veux veut dire lorsque tu t'interroges sur "utiliser void avec un pointeur, comment serait mon scanf ?" et "mon probleme c'est sur la partie du pointeur avec un void".
La seule utilisation de
voidque tu fais dans le code que tu postes est pour indiquer le type de la fonction dans son prototype, que tu définis ainsi :
void struct_etudiant(stud *etd).
voidsignifie ici que ta fonction
struct_etudiant()ne doit rien retourner. Dans d'autres langages, on appelle cela une "procédure". Il n'y a pas d'instruction
return <quelque chose>à la fin d'une fonction dont le type est
void.
En revanche, une fonction qui retournerait une valeur, par exemple
int max(int x, int y)doit comporter un
return <un entier>à la fin de la fonction.
Donc, dans ton code,
voidindique seulement le type de la fonction, et non pas d'un pointeur.
2.
Maintenant, il existe aussi en C des pointeurs sur
void, qui sont des pointeurs génériques, c'est à dire qui ne sont pas attachés à un type particulier.
Par exemple :
void * truc;déclare un pointeur sur
void.
Ces pointeurs sur
voidservent, par exemple, à faire, ou à utiliser des fonctions génériques fonctionnant avec n'importe quel type de données.
La fonction standard C
qsort(), qui permet de classer des tableaux de n'importe quel type (un tableau d'entiers, un tabeau de chaînes de caractères, un tableau de struct,...) , repose sur l'usage d'une fonction de comparaison utilisant des pointeurs génériques et qui décrit comment s'effectue la comparaison.
http://www.cplusplus.com/reference/cstdlib/qsort/
(vois l'exemple)
Tu n'as pas vraiment besoin d'utiliser des pointeurs sur
voiddans ta fonction
void struct_etudiant(stud *etd), sauf si tu veux, par exemple, créer une fonction générique qui servirait à remplir des données concernant plusieurs types de personnes.
Dal