Stocker du texte dans une varaible en C

Fermé
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 - 28 août 2009 à 12:35
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 31 août 2009 à 08:29
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!

8 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 août 2009 à 12:54
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
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 1
28 août 2009 à 13:52
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
Lance toi dans le java, c'est plus facile, plus de pointeur...
0
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 1
28 août 2009 à 13:55
Mwai à part que je suis obligé de le faire en C et que j'ai déjà pas mal avancé ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 août 2009 à 14:45
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
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 1
28 août 2009 à 16:46
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
essai de declarer unsigned char* tableau_texte;
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
31 août 2009 à 08:29
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