Usei a funçao bsearch pra fazer uma busca em um vetor de string e ta dando erro de segmentação , segue o código
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *dicionario[275502];
static int compara(const void *p1, const void *p2)
{
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
int main () {
FILE *dic;
char *line = NULL;
size_t l = 0;
size_t nread;
int Lidos = 0,i;
char lido[22];
//carregar o dicionario para dentro do programa
dic = fopen ( "/usr/share/dict/brazilian", "r");
if( dic == NULL ){
printf("Erro, nao foi possivel abrir o arquivo\n");
exit(1);
}
else{
while (( nread = getline(&line,&l,dic)) != -1)
{
char * novapalavra = malloc (nread-1);
strncpy(novapalavra,line , nread - 1);
dicionario[Lidos] = novapalavra;
Lidos++;
}
}
//tratando o texto
scanf("%s", lido);
while( *lido != EOF)
{
//transformando tudo em minusculas
for (i=0; i < strlen (lido); i++)
if((lido) >= 65 && (lido) <= 90)
lido += 32 ;
//Fazendo a busca no dicionario e imprimindo
if( bsearch(&lido,dicionario,275502,sizeof(char*), compara ))
printf(" %s \t",lido);
else
printf("[ %s ]\t", lido );
scanf("%s", lido);
}
return (0);
}