Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aender

Como Ler um arquivo txt com 100.000 Strings em linguagem C

Recommended Posts

Olá pessoal tudo bem ? estou com uma dúvida aqui.Bom, tenho que ler um arquivo txt que possui 100.000 strings separadas por tabulação e armazenar em um vetor, já fiz o código e está tudo ok mas não consigo ler acima de 20.000, parece que é um erro relativo ao tipo de dados.Para armazenar as strings tenho criar um vetor de caracteres onde a primeira posição corresponde à quantidadede e o segundo comprimento de cada string , mas o programa não lê acima de 20.000, aliás consegui fazer ler até 30.000 alterando o parâmtro comprimento de 100 para 40, mas não entendo porque isso deu certo.


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

int main()
{
 FILE *arquivo;
 long max = 20000; //quantidades de registros a serem lidos
 char vet [max][100]; // Indice 1 : quantidade de registro , indice dois : comprimento das strings
 int i,count;



//===============Código abrir arquivo txt e  armazenar registros no vetor===================================


            arquivo = fopen("dados20000.txt","r"); //abrindo para leitura arq.txt
            if(arquivo == NULL)
             {
             printf("erro ao ler arquivo!");
             }
             else
            {
                 count = 0;
                 while(fgets(vet[count], sizeof(vet), arquivo)) //a vetorização ocorre nessa linha
                 {
                 count++;

                 }
             }
             fclose(arquivo);
/*=============================== Fim Função abrir arquivo==================================*/
   for (i=0;i<=count;i++)
   {
       printf("Vetor lido %s",vet[i]);
   }
   printf("Arquivo lido com Sucesso !!!!\n");
   return 0;
}

Estou deixando o link para baixar os arquivos txt com 20.000 e 100.000 registros .Desde já muito obrigado pessoal.

http://www.4shared.com/rar/d0-D68O6/arquivos.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aender,

 

Você falou que não lê acima de 20000.

Mas você percebeu que a tua variável max está inicializada com 20000? Será que não é isso??

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aender:

 

1. De onde vem a função time?

2. Por que a chamada de srand?

3. Por que você passa sizeof vet para fgets?

4. Qual o valor de count se o arquivo não puder ser aberto? Em que isso implica na parte de impressão?

5. Qual a saída encontrada?

 

Sugiro que conserte sua indentação, para que o código fique mais fácil de se analisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aender:

 

1. De onde vem a função time?

2. Por que a chamada de srand?

3. Por que você passa sizeof vet para fgets?

4. Qual o valor de count se o arquivo não puder ser aberto? Em que isso implica na parte de impressão?

5. Qual a saída encontrada?

 

Sugiro que conserte sua indentação, para que o código fique mais fácil de se analisar.

 

Obrigado por participar. Bom, time e srand não faz nada na função copiei sem querer, elas são usadas em outra função para gerar números aleatórios.O sizeof vet representa a quantidade de caracteres a serem lidos no buffer de cada vez.Vou ser sincero eu não criei essa função porque não domino muito bem essa parte de arquivos, eu encontrei pesquisando em outro fórum e revolveu parcialmente meu problema.Continuando, count é o indice do vetor que vai receber os registros do arquivo txt, cont e incrementado até a atingir a quantidade de registros lidos .Meu problema está sendo configurar corretamente esse valor de sizeof que não sei exatamente para que serve.Fiz teste aqui até com 30000 registros sizeof 60, a partir disso não lê mais, dá erro e nem executa o programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.