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.
Afficher la suite