[C] probleme de taille...

voila le probleme :

je suis actuellement en train de transformer des fichiers FORTRAN en C et la je tombe sur OS :

une varaible FORTRAN est ainsi : header(6)*80 ...
ce qui donne en C header[80][80][80][80][80][80]...

et monsieur compilo ne veut pas de ca ... quelqu'un pourrait m'aider??

merci :)

<-- mono -->

10 réponses

  • Votes
  • Date
  • Date décroissante
  1. ben il dit [ violamment, vraiment ] :

    " psfjmp.c:39: error: size of array `header' is too large "

    avec un regard sadique ... en plus !
    1. En fait j'avais pas réagi, mais tu as vraiment besoin de tout ça ? et ta variable, char ou int ou autre chose ?

      car cela représente 80^6 = 262144000000

      c'est énorme !!!
      1. ma variable est char..

        et oui j'ai vraiment besoin de tout ça ( analyse d'image ) !!!

        ...mdr... :P

        <--- mono -->
        1. Contributeur
          Pour répondre à ton prblème Mono, vient voir le doctor ListeChainnée et hop une petite dose ! Ahhh... c'que ca fais du bien une petite liste chaînée bien croustillante!

          Bonne chance je ne vois que ca pour toi !
          Au passage : c'est pas [6][80] mais [80][6], et puis en fait, tout compte fait je dirais même, pkoi tu déclare pas un type ou une pauv structure à deux balles qui fait ton [6], et tu fais unt tableau de 80 structure de ce genre, tu vois ce que je veux dire ?

          typedef struct bibi {
             ton machin de [6]
          };
          
          
          int main () {
             strcut bibi monmachin[80];
          }
          

          Et on dit merci qui mono ??
          Merci kij !! de m'avoir répondu alors que je suis déjà partis manger !!!
          ++
          1. alors [6][80] n'a rien avoir avec [80][80][80]...

            exemple :

            ->char [3][4] tu auras 3 lignes avec 4 colonnes d'où 3*4 cases (ce qui fait 12...)

            ->char [3][3][3][3] tu auras 3 lignes qui contiendront 3 lignes qui contiendront 3 lignes qui contiendront 3 colonnes. ce qui fait 3^3 cases (euh... 81 :-) )

            donc ce n'est pas du tout la même chose à toi de voir ce tu as besoin.
            1. un truc à savoir aussi,
              int variable[500000];

              soit le compilateur refuse, soit ça plante, parce que c'est énorme
              et que c'est rarement disponible d'un seul bloc statique.
              la seule solution, c'est :
              int *variable =(int *) malloc(500000 *sizeof(int)) );

              (ne pas oublier
               free(variable);
              à la fin de la fonction.)
              mais c'est vrai que les listes chainées c'est une excellente solution
              pour les systèmes à X dimensions.
              a+