Stocker du texte dans une varaible en C

Pouic182 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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!
A voir également:

8 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   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
Mc Fly
 
Lance toi dans le java, c'est plus facile, plus de pointeur...
0
Pouic182 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   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
zilot2
 
essai de declarer unsigned char* tableau_texte;
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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