Si quelqu'un peut jeter un oeil sur ce code et le critiquer merci
(constructive les critiques :-))
j'ai un probleme tout bete
ce programme lit un fichier texte le stocke dans un char *
puis on parcours le char etoile pour creer un tableau de pointeur
pour chaque debut de ligne
tout marche correctement sauf quand je veux afficher a la fin
car le printf %s attend un \0 pour terminer la chaine hors je n'en mais pas
et je ne veux pas reallouer mon char * 36000000 de fois
si quqlqun peut me dire comment corriger et ameliorer ca ce serait sympa
merci d'avance
//**********************************************
void LitFichier44()
{//ouvre un fichier le stocke dans un char*
int longeur=0;
FILE* fichier = NULL;
char **tableauligne=NULL;
char *letexte=NULL;
long nbrlignes=0;
long i=0,
long j=0;
fichier = fopen("test.txt", "r"); //ouvre le fichier en lecture
if (fichier != NULL)
{
//nombre de char du fichier
fseek(fichier, 0, SEEK_END); //se positionne a la fin
longeur=ftell(fichier); //longeur=taille du fichier
printf("longeur du fichier %ld\n",longeur);
//fout le fichier dans un char *
letexte=(char*)malloc(longeur*sizeof(char)); //alloue la memoire pour le fichier
system("pause");
rewind(fichier); //se positionne au debut
while(i<longeur)
{
letexte[i]=fgetc(fichier);
//compte le nombre de ligne
if (letexte[i]=='\n') nbrlignes++;
i++;
}
fclose(fichier); //ferme le fichier
//affiche le texte
printf("%s\n",letexte);
printf("Nombre de lignes %ld\n",nbrlignes);
system("pause");
//pour les lignes
tableauligne=(char**)malloc(nbrlignes*sizeof(char*));
tableauligne[0]=letexte;
for (i=1;i<nbrlignes-1;i++)
{
while (letexte[j]!='\n')
{j++;}
tableauligne[i]=&letexte[j+1];
j+=1;
}
/* le probleme est ici */
//affiche ligne par ligne
for (i=0;i<nbrlignes-1;i++)
{
//en toute bonne logique c ca m'affiche du pointeur juqu'a la fin du char
//comment corriger ca
printf("\tLigne: %ld ->%s",i,tableauligne[i]);
}
free(letexte);
free(tableauligne);
}
printf("\n");
}