|
Bas de page | |
---|---|
Auteur | Sujet : Les pointeurs: je bloque |
Publicité | Posté le 28-10-2007 à 22:24:17 |
flo850 moi je | il faut allouer tes entier |
Elmoricq Modérateur | Pour commencer, n'utilise pas scanf(). Utilise fgets() pour lire une chaîne de caractères, puis convertis-la avec strtol(). Ensuite, pour la première valeur (le nombre d'entiers à entrer), pas d'allocation nécessaire. Un entier tout simple suffit, donc "int i" sera parfait, mais on préfèrera un nom plus parlant que "i" qui désigne traditionnellement une variable jetable d'une boucle for. Ensuite, il te faudra donc un tableau composé de "i" cases, pour recevoir la liste de nombres entrés par l'utilisateur. C'est là qu'interviennent les pointeurs. Tu alloues de la mémoire avec malloc(), calloc() ou realloc(). La taille du bloc alloué est calculé avec la formule toute bête : "nombre_d'elements * taille_d'un_element". Cette taille de bloc, tu dois la conserver quelque part (ici c'est facile, c'est "i" pour le nombre, et la taille d'un élément est connue). Parce que si tu ne la conserves pas, tu n'as aucun moyen de la retrouver. Lorsque tu as terminé avec ce bloc mémoire, tu dois le libérer : free(). Plus d'infos ici : http://mapage.noos.fr/emdel/notes.htm#pointeurs Message édité par Elmoricq le 28-10-2007 à 22:55:44 |
Pingumaru | Merci à vous deux pour vos réponses rapides.
|
Elmoricq Modérateur | Ton programme plantait parce que scanf(), avec le pattern que tu lui as indiqué, demande l'adresse d'un entier, et que tu lui as fourni l'adresse d'un pointeur d'entiers. Et tes profs méritent la pelle à clous pour encore enseigner scanf() à leurs élèves. Message cité 1 fois Message édité par Elmoricq le 28-10-2007 à 23:29:21 |
Pingumaru |
|
Joel F Real men use unique_ptr | non, tes profs enseignent scanf parce qu'ils ont INCOMPETENTS. N'ayons pas peur des mots. La quasi totalité des profs de C (et de C++ ) de la quasi totalité des facs (voire même des ecoles d'ingé) ont appris le C pré-K&R à l'arrache parce qu'ils ne trouvaient pas de larbin pr coder à leur place.
|
flo850 moi je | peut etre aussi que c'est pour essayer de simplifier un minimum l'apprentissage |
Taz bisounours-codeur |
ou pas
|
flo850 moi je | belle argumentation je suis fan |
Publicité | Posté le 29-10-2007 à 09:06:36 |
Elmoricq Modérateur |
|
Trap D | Je ne sais pas, mais moi, avant de critiquer je me renseignerais. |
Taz bisounours-codeur |
|
Elmoricq Modérateur |
|
Joel F Real men use unique_ptr |
|
flo850 moi je | tu as raison, il vaut mieux decouvrir les structure de données ( arbres, table de hachage ) tout seul |
Joel F Real men use unique_ptr |
|
Elmoricq Modérateur | Arbres, tables de hachages et tout le toutim', ce ne sont pas des concepts propres au C. Après ça n'empêche pas de demander des cas pratiques en cours d'algorithme dans un langage enseigné par ailleurs. À l'IUT dans lequel j'étais, les cours d'algorithme et de C étaient "synchronisés" par les profs dans ce but. Message édité par Elmoricq le 29-10-2007 à 09:50:49 |
Trap D |
Désolé mais moi ça ne me choque pas, c'est de la technique, pas de la théorie.
|
Taz bisounours-codeur |
|
Trap D | Oui, et alors ?
|
Joel F Real men use unique_ptr |
|
Trap D | Si tu le dis ... Message édité par Trap D le 29-10-2007 à 10:33:16 |
Taz bisounours-codeur |
|
Trap D | J"Si t'es pas capable de lire un entier, je vois pas comment aller plus loin." |
djobidjoba | salut, moi j'aurais fait ca:
|
Elmoricq Modérateur |
|
djobidjoba | je veux bien plus de précisons sur l'utilisation du scanf de la bonne maniere (pas en remplacement par fgets)
|
Taz bisounours-codeur | Utilise fgets + sscanf.
|
Gruikmusic | scanf est pour les dements mais sscanf est pour les semi-dements
|
Emmanuel Delahaye C is a sharp tool |
Evidemment, on peut simplifier en créant des fonctions de saisies... Message édité par Emmanuel Delahaye le 29-10-2007 à 14:26:55 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
djobidjoba | merci pour les explications détaillées: n = scanf ("%d", p + i); équivaut à &p[i] ? Message cité 1 fois Message édité par djobidjoba le 29-10-2007 à 16:56:14 |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
AthlonSoldier Feel the power |
Message édité par AthlonSoldier le 01-11-2007 à 02:00:21 |
mhidi que dire... |
--------------- http://forum.hardware.fr/hfr/Achat [...] 2243_1.htm |
Publicité | Posté le |
Sujets relatifs | |
---|---|
ActiveX bloque mes Rollover! | Vecteur de pointeurs d objet |
Deux Pointeurs pascal 1-@ | [AS3] getChildAt at addChild [RESOLU] |
[MSDOS] PROGRAMME INSPIRE DE LOST SUR LEQUEL JE BLOQUE | Pointeurs de fonctions avec "..." |
liste simple avec 2 pointeurs sur le premier et le dernier elements | Encore une question sur les pointeurs |
question sur les pointeurs de fonctions | question sur les pointeurs |
Plus de sujets relatifs à : Les pointeurs: je bloque |