[c] lire contenu fichier dans un tableau

Fermé
Ldb - 18 nov. 2004 à 12:25
 ldb - 18 nov. 2004 à 14:22
Bonjour tlm!
Je debute en C et j'ai un petit probleme
Je souhaite ranger le contenu d'un fichier
dans un tableau de chaine et le trier.
Quand je compile avec VC++ 6.0 il y a 0 erreurs
Quand je lance le programme ca plante

debug assertion failed...

Sous linux avec GCC ca marche tres bien.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int (*fptr)(const void *, const void *);

int compare(const char **str1, const char **str2) {
return strcmp(*str1, *str2);
}


int main(void)
{

FILE *nbr;
if( ( nbr = fopen( "email_addresses.txt", "r+" ) ) == NULL )
{return 1;}

int nbrligne=0;

while(!feof(nbr))
{
char *buf_ephemer = ( char * ) malloc( 512 ); 
fscanf( nbr, "%s\n", buf_ephemer);
nbrligne++;
}
fclose(nbr);

char ** tableau;
tableau = (char **)malloc( nbrligne-1 );

int i,j;

FILE *eMail;
if( ( eMail = fopen( "email_addresses.txt", "r+" ) ) == NULL )
{return 1;}


for(i=0;i<nbrligne;i++)
{
char *pszChar = ( char * ) malloc( 512 );
fscanf( eMail, "%s\n", pszChar);
tableau[i]=pszChar;
}

fclose(eMail);

FILE *tri,*triout;
if( ( tri = fopen( "email_addresses.txt", "r+" ) ) == NULL )
{return 1;}
if( ( triout = fopen( "email_addressestriées.txt", "w+" ) ) == NULL )
{return 1;}

qsort((void *) tableau, nbrligne-1, sizeof(char *),  (fptr) compare);

for(j=1;j<nbrligne;j++)
{
fprintf(triout,"%s\n",tableau[j]); 
}


fclose(tri);
fclose(triout);

return 0;
}


on m'a dit que ct au niveau des mallocs mais j'arrive pas a corriger les erreurs.
A voir également:

1 réponse

c'est bon j'ai trouver ma connerie

++

vous pouvez supprimer ce message ;)
0