Ir ao conteúdo

Posts recomendados

Postado

 Olá, tenho que fazer um programa que carrega o dicionario da partição /usr/share/dict/brazilian pra memória do programa , só que fiz alguma coisa errada e não estou conseguindo arumar .

Segue o código :

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

char *dicionario[275502];


int main () {
 FILE *dic;
 char *novapalavra;
 char *line = NULL;
 size_t l = 0;
 size_t nread;
 int Lidos = 0;

//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)
   *novapalavra = malloc (nread-1);
   strncpy(novapalvra,line , nread - 1);
   *dicionario[Lidos] = novapalvra;
   Lidos++;
   
  }


 printf("%s \n",dicionario[0]);
 printf("%s \n ",dicionario[1]);

 return (0);
 }


e o erro é :

sad.c: In function ‘main’:
sad.c:25:17: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
    *novapalavra = malloc (nread-1);
                 ^
sad.c:26:12: error: ‘novapalvra’ undeclared (first use in this function)
    strncpy(novapalvra,line , nread - 1);
            ^
sad.c:26:12: note: each undeclared identifier is reported only once for each function it appears in.

 

Obs: eu tenho que colocar cada palavra(uma palavra por linha dentro do vetor).

Postado

 valeu cara, nem tinha percebido isso, fiquei até com vergonha kkk

Mas eu arrumei o erro e agora ta dando segmentation fault e não to entendendo o porque

Segue o codigo arrumado :

 

 

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

char *dicionario[275502];


int main () {
 FILE *dic;
 char *novapalavra;
 char *line = NULL;
 size_t l = 0;
 size_t nread;
 int Lidos = 0;

//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)
   novapalavra  = (char *)malloc (nread-1);
   strncpy(novapalavra,line , nread - 1);
   dicionario[Lidos] = novapalavra;
   Lidos++;
   
  }

 return (0);
 }

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!