Allocation de tableau dans une fonction - C - Programmation
Marsh Posté le 11-03-2006 à 02:53:25
En C, [] est prioritaire par rapport à *.
Ta ligne 23 devrait être : (*p_tab)[num] = num*num+2;
(et la prochaine fois, poste du code compilable...)
Marsh Posté le 11-03-2006 à 08:45:07
Toea a écrit : Bon, je lutte, j'ai recherché sur tout le net, et dans toute les langues, et je ne vois pas où je me trompe... Voici une version résumée de mon problème, quelqu'un pourrait me dire où est que je me plante ? |
Il faut ecrire des choses simples...
http://mapage.noos.fr/emdel/notes.htm#malloc
http://mapage.noos.fr/emdel/notes.htm#realloc
Code :
|
D'autre part, je conseille de mémoriser la taille et donc de gérer le tableau dynamique avec un objet
Code :
|
Marsh Posté le 11-03-2006 à 09:25:45
Emmanuel Delahaye a écrit :
|
Euh, pourquoi un pointeur de type "size_t" et non une simple variable pour stocker la taille de "p" ???
Marsh Posté le 11-03-2006 à 09:29:48
Bonjour,
Puis-je faire une incursion dans votre discution (sujet programmation TCL, décodage d'une expression réguliére) . ?
Merci
Marsh Posté le 11-03-2006 à 09:34:17
Emmanuel Delahaye a écrit :
|
un besoin de généricité ? de stocker la taille du tableau "avec" le tableau ?
Ce problème a sa solution Le C++
Marsh Posté le 11-03-2006 à 09:37:18
Bonjour,
Puis-je faire une incursion dans votre discussion (sujet programmation TCL, décodage d'une expression régulière) . ?
Merci
Marsh Posté le 11-03-2006 à 09:48:27
Sve@r a écrit : Euh, pourquoi un pointeur de type "size_t" et non une simple variable pour stocker la taille de "p" ??? |
Brain fart! Je corrige.
Marsh Posté le 11-03-2006 à 09:48:33
HUGULUGUS a écrit : Bonjour, |
c'est quoi ca ?
Marsh Posté le 11-03-2006 à 09:50:21
HUGULUGUS a écrit : Puis-je faire une incursion dans votre discussion (sujet programmation TCL, décodage d'une expression régulière) . ? |
Non. Crée un nouveau sujet, et dans le bon forum (ici, c'est langage C).
Marsh Posté le 11-03-2006 à 09:51:50
Les expressions réguliéres sont utilisées en programmation comme "filtre" sur une chaîne de programmation.
On les retrouve en C, C++, TCL , Pyton ...
J'ai simplement besoin d'aide pour le décodage d'une chaîne...
Marsh Posté le 11-03-2006 à 09:52:55
++fab a écrit : Ce problème a sa solution Le C++ |
TROLL ALERT
Marsh Posté le 11-03-2006 à 09:54:38
ReplyMarsh Posté le 11-03-2006 à 09:57:11
ReplyMarsh Posté le 11-03-2006 à 09:58:43
HUGULUGUS a écrit : Puisqu'il est utilisé en C++, pouvez-vous m'aider a la comprendre ? |
T'es bouché ou quoi ? Ici c'est le forum C. pas C++.
Et n'insiste pas. Je viens de faire réparer mon trollomètre et il a ses vapeurs, le pauvre...
Marsh Posté le 11-03-2006 à 10:00:35
Désolé, j'ai l'habitude de dépanner les gens, c'est mon boulot, on n'a pas la même conception du service;
By au forum, c'est triste
Hugues
Marsh Posté le 11-03-2006 à 10:03:33
De plus, vous ne savez pas lire:
On les retrouve en C, C++, TCL , Pyton ...
Marsh Posté le 11-03-2006 à 10:06:18
HUGULUGUS a écrit : Désolé, j'ai l'habitude de dépanner les gens, c'est mon boulot, on n'a pas la même conception du service; |
Commence par lire les regles du forum au lieu de débarquer au milieu d'un conversation...
Et tes leçons de morale à deux balles sur l'aide et le service, tu te les gardes, parce qu'ici, aider les gens on ne fait que ça. Et bénévolement, je te le rappelle...
Marsh Posté le 11-03-2006 à 10:08:31
ReplyMarsh Posté le 11-03-2006 à 10:10:09
HUGULUGUS a écrit : Je suis parti... chercher de l'aide ailleurs. |
Sur le bon forum, peut être !
Marsh Posté le 11-03-2006 à 10:32:22
quelqu'un à déja vu un équivalent de la STL mais en C, une bibliothèque de conteneurs générique avec itérateurs et algorithmes génériques ?
Marsh Posté le 11-03-2006 à 19:35:27
Emmanuel Delahaye a écrit : Brain fart! Je corrige. |
Pas la peine, ça marche quand-même avec un pointeur. Faut juste l'allouer de "1 *sizeof(size_t)" avant de s'en servir et ne pas oublier de le "freeer" ensuite
On peut aussi utiliser ce pointeur pour stocker une taille au lieu d'une adresse. Faut juste le caster quand on veut s'en servir
Marsh Posté le 11-03-2006 à 19:39:52
HUGULUGUS a écrit : c'est triste |
Et ca te coutait quoi d'ouvrir un nouveau topic plutôt que d'intervenir ici ???
HUGULUGUS a écrit : By au forum, |
Bon, aussi vite il est venu aussi vite il est reparti. Tu nous manqueras... (euh, en fait non )
Marsh Posté le 12-03-2006 à 14:00:33
Ah !! Merci beaucoup... En plus, il me semble m'être déjà fait avoir avec cette histoire de [] prioritaire sur *.. ah, ça va mieux ! (et désolé pour le nom compilable, c'est vrai que je ne l'ai pas testé du tout...)
Merci Emmanuel Delahaye pour les autres conseils. Mais j'avais précisé dans mon message que je ne passais pas par un pointeur temporaire pour "simplifier" mon problème, ou du moins sa présentation. Et question de débutant: à quoi ça sert de mémoriser la taille et donc de gérer le tableau dynamique avec un objet ?
Marsh Posté le 12-03-2006 à 14:07:04
Ok, en réfléchissant deux secondes, j'ai compris l'intéret de la structure...
Marsh Posté le 11-03-2006 à 02:15:55
Bon, je lutte, j'ai recherché sur tout le net, et dans toute les langues, et je ne vois pas où je me trompe... Voici une version résumée de mon problème, quelqu'un pourrait me dire où est que je me plante ?
Le code:
Le résultat: premier tour de boucle, ça marche bien, on a un "[i]pour i = 0, resultat = 2" (ou un autre résultat correct si on change la formule)
Deuxième tour de boucle, Segmentation fault au niveau de la ligne 23 alors qu'il n'y a pas eu d'erreur d'allocation de signalée...
Je pensais pourtant qu'en passant l'adresse du pointeur du tableau (&tab) dans un pointeur de pointeur entier (**p_tab), je pouvais travailler librement sur mon tableau dans la fonction, mais à priori...
Elle est où ma bourde s'il vous plait.. là, j'agonise devant mon pc...
Merci beaucoup à qui me répondra !
(Remarque: en faisant *p_tab = (int *) realloc(*p_tab,(nb+1)*sizeof(int)) sans passer par un pointeur temporaire, je sais que risque de perdre complètement mon pointeur originel si realloc échoue, mais ça simplifie le problème de s'en passer ici)
(Remarque 2: pour info, c'est compilé avec du gcc 3.2.3 sous unix)