Passage erroné d'un tableau de chaînes de caractères à une procédure.. - C++ - Programmation
Marsh Posté le 10-03-2003 à 07:17:29
bon je corrige que le morceau de code qui est clairment présenté, à savoir le petit bout quie st à la fin. situe nous mieux le problème en enlevant tout ton foutoir (le traitement d'option apr ailleurs)
char c;
c doit etre un int, par ce que EOF ne rentre pas dans un char. tu risque donc de ne pas voir que tu es arrivé en fin de fichier
Marsh Posté le 10-03-2003 à 13:45:19
optv=malloc(sizeof(char));
Ton pb doit venir de cette ligne. Ici, tu n'alloues qu'un caractère !
Marsh Posté le 16-03-2003 à 16:07:57
bon now j'ai un nouveau problème :
dans texindex.c :
j'alloue de la place à indexv en fonction du nombre de mots dans le fichier d'index, puis je le remplis avec les mots :
Code :
|
tout s'affiche correctement...
par contre si je fais le même printf dans le main.c une fois cette procédure appelée, j'ai des (null) affichés à chaque fois :
Code :
|
Marsh Posté le 16-03-2003 à 23:59:07
void readIndexTxt(char* filename, int* indexc, char** indexv, Boolean verbose)
int indexc=0;
char** indexv;
readIndexTxt(findex,&indexc,&indexv,opt_v);
&indexv est un char***
(bizarre que le compilateur ne le signale pas)
Marsh Posté le 09-03-2003 à 23:22:27
voilà, j'ai fait un programme qui charge des fichiers de deux façons différentes (un index.txt chargé par ligne dans un tableau de tableaus de char (char**) et un fichier test.tex chargé dans un tableau de char (char*)).
dans le module de chargement, je lis sans problèmes sourcev[i] mais dans main.c j'ai une erreur de segmentation pour les mêmes i (tous). voici le code :
fichier texindex.c
fichier principal : main.c
les erreurs ont lieu ici :
là ça marche :
while((c=getc(f))!=EOF)
{
sourcev[i]=c;
if(verbose) printf("Chargement de : sourcev[%d]\t:\t%c\n",i,sourcev[i]);
else printf("." );
i++;
}
là ça plante :
for(i=0;i<sourcec;i++)
{
printf("%c",sourcev[i]);
}
Message édité par ceyquem le 16-03-2003 à 16:09:09