Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1391 connectés 

  FORUM HardWare.fr
  Programmation
  C

  (Debutant!) probleme d'allocation c99

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(Debutant!) probleme d'allocation c99

n°1251218
mador
Posté le 23-11-2005 à 03:04:11  profilanswer
 

bonjour,
je dois alloué un tableau a 2 dimension, voila comment jai proceder:
 
int n,m;
printf("entrer la dimension du tableau:\n" );
scanf("%d",&n);
int **tab;
tab=malloc(n * sizeof * tab);
for (int i=0;i<n;i++)
{
      tab[i]=malloc(m * sizeof * (tab[i]));
}

 
Et mon compilateur (terminal sous mandralinux 10.1) me dit que dans la fonction 'calcul' il y a une erreur:
 
'for' loop initial declaration used outside c99 mode
 
Merci d'avance pour votre aide,
a bientot.

mood
Publicité
Posté le 23-11-2005 à 03:04:11  profilanswer
 

n°1251221
matafan
Posté le 23-11-2005 à 06:15:30  profilanswer
 

Si tu fais des trucs C99 (la déclaration de i à l'intérieur du for en l'occurence) et que tu utilises gcc comme ça semble être le cas, il faut compiler avec -std=c99.
 
Edit : ça n'a rien à voir avec ton problème, mais dans ton morceau de code tu n'initialises par m.


Message édité par matafan le 23-11-2005 à 06:18:34
n°1251759
mador
Posté le 23-11-2005 à 18:36:00  profilanswer
 

merci,
et justement maintenant j'ai un probleme pour intialiser m!
de l'aide svp

n°1251818
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-11-2005 à 19:45:05  profilanswer
 

mador a écrit :

merci,
et justement maintenant j'ai un probleme pour intialiser m!
de l'aide svp


On est censés deviner quel est le problème ? Poste le code avec les balises 'fixed' ou 'cpp'.
 
J'ai quand même idée que tu dois faire une saisie, alors autant le faire bien tout de suite.
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers


Message édité par Emmanuel Delahaye le 23-11-2005 à 19:46:44

---------------
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/
n°1251996
mador
Posté le 24-11-2005 à 01:27:22  profilanswer
 

En fait c'est bon j'ai compris mon probleme, desolé j'etais dans mon délire!
Mais un nouveau se pose:
Mon programme rempli un tableau dans le desordre :
 

YhFS9QwxVw/jo[


 
Et je voudrais pouvoir l'afficher en temps reel, c'est a dire au fur et a mesure qu'il se rempli.
Merci de me donner des conseil.

n°1251997
mador
Posté le 24-11-2005 à 01:29:22  profilanswer
 

mador a écrit :

En fait c'est bon j'ai compris mon probleme, desolé j'etais dans mon délire!
Mais un nouveau se pose:
Mon programme rempli un tableau dans le desordre :
 

Code :
  1. YhFS9QwxVw/jo[


 
Et je voudrais pouvoir l'afficher en temps reel, c'est a dire au fur et a mesure qu'il se rempli.
Merci de me donner des conseil.


n°1251998
0x90
Posté le 24-11-2005 à 01:35:27  profilanswer
 

tu veut afficher en temps réel le tableau au fur et a mesure que le programme le remplit ? dans ce cas je crois que tu va voir un problème de lenteur, du coté utilisateur ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1252015
matafan
Posté le 24-11-2005 à 05:31:32  profilanswer
 

Faudra être plus précis si tu veux de l'aide. Tu as un tableau de pointeurs vers des tableaux d'int... Dans tous ça c'est quoi ce "YhFS9QwxVw/jo[" que tu veux afficher ?

n°1255419
Sve@r
Posté le 29-11-2005 à 16:45:47  profilanswer
 

mador a écrit :

voila comment jai proceder:  
 

int n,m;  
printf("entrer la dimension du tableau:\n" );  
scanf("%d",&n);  
int **tab;  
tab=malloc(n * sizeof * tab);  
for (int i=0;i<n;i++)  
{  
      tab[i]=malloc(m * sizeof * (tab[i]));  
}

 
 
Mais un nouveau se pose:  
Mon programme rempli un tableau dans le desordre :  

YhFS9QwxVw/jo[




 
Tu fais erreur, "malloc" ne remplit pas une zone, il l'alloue. Schématiquement, tu as une grosse zone mémoire de 512Mo évidemment remplie de tout ce que l'ordinateur y a mis avec les différents programmes qui se sont exécutés depuis son démarrage.
Puis, tu demandes à "malloc" de te réserver une zone. Ben "malloc" pose un verrou à un certain endroit de la mémoire et dit "à partir de là et de maintenant, les n octets suivants sont à moi". Dans cette procédure, il n'y a pas de remplissage.
Maintenant, si tu affiches les "n" octets que malloc t'a réservé, ben tu n'affiches que leur contenu résiduel...

n°1255530
Trap D
Posté le 29-11-2005 à 19:16:21  profilanswer
 

Faudrait pas oublier non plus que malloc peut échouer, donc il faudrait tester les retours.
Il faudra penser aussi à désallouer la mémoire avec des free bien placés.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  (Debutant!) probleme d'allocation c99

 

Sujets relatifs
[CSS] probleme hauteur de cadreproblème génération xml avec php
problème d'écriture sur le disque[Résolu] POO question hype débutant
Problème d'arrondi, somme de pourcentage au dela de 100%problème avec Thread.sleep() dans des tests Junit...
Problème Css calque sous dreamweaverProblème VB (débutant...)
aide pour un probléme 
Plus de sujets relatifs à : (Debutant!) probleme d'allocation c99


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR