Ir ao conteúdo
  • Cadastre-se

Matheus Dionysio

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por Matheus Dionysio

  1. Olá, estou fazendo um exercício em c , e nãoo sei porque a função esta dando falha de segmentação.

     

     

    void preencher (int vetS[],int vetB[],int vetM[],int n ){
      int i,e,a;
     
      //Criando os vetores;
      puts("Insira o numero de elementos no vetor" );
      scanf("%i",&n);
      vetS =(int *) malloc((n+1)*sizeof(int));
      vetM =(int *) malloc((n+1)*sizeof(int));
      vetB =(int *) malloc((n+1)*sizeof(int));

      //prenchendo os vetores com numeros aleatorios
      puts("digite : \n1 - Para gerar entre 0 e 9\n2 - para gerar valores entre 0 e 99\n3 - para gerar valores entre 0 e 999");
      scanf("%i",&e);
      while ( (e > 3) || (e <= 0) ){
      puts("Favor digitar um numero entre 1 e 3");
      scanf("%i",&e);    
      }

     

      if( e == 3)
       for (i = 1;i <= n;i++){
        a = rand () %1000;
        printf("%i\n",a );
        vetS = a;
        vetB = a;
        vetM = a;
       }
     else if(e == 2)
      for (i = 1;i <= n;i++){
       a = rand () %100;
       vetS = a;
       vetB = a;
       vetM = a;
      }

     else
      for (i = 1;i <= n;i++)
      {
       a = rand () %100;
       vetS = a;
       vetB = a;
       vetM = a;
      }    
    }

  2. 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);
     }

     

  3.  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);
     }

  4.  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).

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...