Stocker du texte dans une varaible en C

Bonjour tout le monde,

J'aurais besoin de stocker du texte dans une variable en langage C, pour l'instant je fais ça de la manière suivante :
-- > char tableau_texte[65535];

Ce qui me renvoie une erreur de segmentation, car le texte que je cherche à stocker est trop grand pour être ranger dans ma variable.

Est ce que quelqu'un aurait une solution pour déclarer une variable plus grande que 65535 ?

Merci d'avance!
Configuration: Windows XP
Firefox 3.0.13

8 réponses

  1. Contributeur
    Salut.
    Il faut dans ce cas là utiliser les pointeurs.
    En C, utilise les fonctions malloc et calloc. Il faut compter le nombre de caractère.
    0
    1. Merci pour ta rapidité de réponse!

      Est ce que c'est bon si je déclare mon pointeur de cette façon :
      char* tableau_texte;
      tableau_texte = calloc (999999 , sizeof(char));

      Car après si je fais un :
      nombre_de_caractere=recv(id_socket,tableau_texte,sizeof(tableau_texte),0);

      Je ne récupére que les 8 premiers caractères de mon texte. . .

      Verrais-tu une erreur dans ce que j'ai écrit ?
      0
      1. Lance toi dans le java, c'est plus facile, plus de pointeur...
        0
        1. Mwai à part que je suis obligé de le faire en C et que j'ai déjà pas mal avancé ^^
          0
          1. Contributeur
            Il y a realloc aussi.
            je ne vois pas d'erreur dans ce que tu as écrit sur les pointeur.
            Par contre dans le recv oui. sizeof donne la taille d'un tableau, pas la taille d'une zone de mémoire alloué par malloc ou calloc, dans les cas différents du tableau il donne la taille mémoire occupé par la variable, et dans le cas d'un pointeur, c'est 8 octets (64 bits) ce qui me laisse supposé que ton processeur est un 64 bits.
            là il faut écrire :
            recv(id_socket,tableau_texte,999999,0);
            Là ça devrai fonctionner.
            0
            1. Ca fonctionne un peu miex c'est vrai, merci!
              En revanche, je n'arrive toujours pas a récupérer l'intégralité de mon texte, même en augmentant la taille de que j'alloue...
              de plus, j'ai l'impression que la quantité de texte récupérer est aléatoire par moment.

              Une dernière piste?
              0
              1. essai de declarer unsigned char* tableau_texte;
                0
                1. Contributeur
                  Si ça se trouve, il faut renforcer la lecture de ton texte. Je n'ai jamais essayé de lire de très gros fichiers comme ça. Il est possible que l'OS ou la RAM se trouve limité en vitesse et génère des erreurs, il faut donc avoir une gestion d'erreurs super pointilleuse.
                  0