Ir para conteúdo

POWERED BY:

Arquivado

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

rafaieu

Contar linhas de txt

Recommended Posts

Bom dia,

Pessoal estou desenvolvendo um trabalho para faculdade porém estou quebrando a cabeça em um problema que me surgiu.

O programa consistem em gravar dados com struct, salvar em .txt e depois que o programa for fechado preciso listar os arquivos que estão no .txt.

Tai o problema, preciso contar quantas linhas tem no arquivo .txt para definir quantas vezes o laco vai rodar mas não consigo fazer isso, tentei usar a funcao while (!feof(arq)) não entra em laõ infinito.

Vou postar apenas a funcao se preferirem eu posto o codigo inteiro.

  void abre(struct reg pessoa[1000]){   
int i,j=0,k=0;                                            
FILE *arq;                                                                                      arq=fopen("dados.txt","r");   
if(arq == NULL){       
printf("Arquivo nao pode ser aberto");                                                                      sleep(1000); }
  else if(arq != NULL){
          while (!feof(arq))    
            i++;    
             for(j=0; j<=i j++)                                                                      
fscanf(arq,"%s %f\n", &pessoa[j].nome, &pessoa[j].imc);                                                             for(j=0; j<=i; j++)
                     printf("NOME: %s IMC: %f\n",pessoa[j].nome,pessoa[j].imc);
                      fflush(stdin);  
                                         
                                         }


Pessoal desculpa, to com problema no Chrome e não estou conseguinto indentar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Bom dia,

 

Pessoal estou desenvolvendo um trabalho para faculdade porém estou quebrando a cabeça em um problema que me surgiu.

 

O programa consistem em gravar dados com struct, salvar em .txt e depois que o programa for fechado preciso listar os arquivos que estão no .txt.

 

Tai o problema, preciso contar quantas linhas tem no arquivo .txt para definir quantas vezes o laco vai rodar mas não consigo fazer isso, tentei usar a funcao while (!feof(arq)) não entra em laõ infinito.

 

Vou postar apenas a funcao se preferirem eu posto o codigo inteiro.

 

 

  void abre(struct reg pessoa[1000]){   
int i,j=0,k=0;                                            
FILE *arq;                                                                                      arq=fopen("dados.txt","r");   
if(arq == NULL){       
printf("Arquivo nao pode ser aberto");                                                                      sleep(1000); }
  else if(arq != NULL){
          while (!feof(arq))    
            i++;    
             for(j=0; j<=i j++)                                                                      
fscanf(arq,"%s %f\n", &pessoa[j].nome, &pessoa[j].imc);                                                             for(j=0; j<=i; j++)
                     printf("NOME: %s IMC: %f\n",pessoa[j].nome,pessoa[j].imc);
                      fflush(stdin);  
                                         
                                         }

 

Pessoal desculpa, to com problema no Chrome e não estou conseguinto indentar..

 

 

Pessoal fiz uma gambiarra enorme, mais ta funcionando perfeitamente acho que o professora vai levar em consideração...

 

a solução que eu pensei é a seguinte.

 

 

na minha funcao grava, eu inserio 3 variaveis para o txt um interio = posicao 1 string = nome e um float = imc

 

depois usei essa funcao

 

 

void abre(struct reg pessoa[1000]){
int i=0,j=0,k=0,temp=0;
float tempf=0;
char tempc=0;  
                                         FILE *arq;                                        
                                         arq=fopen("dados.txt","r");
                                         
                                         if(arq == NULL){
                                                printf("Arquivo nao pode ser aberto");
                                                sleep(1000);
                                         }else if(arq != NULL){
 fscanf(arq,"%i %f %c", &k ,tempc, &tempf);
// printf("valor de k %i %c",k,tempc);
 //printf("\nNOME: %s IMC: %f %i\n",pessoa[j].nome,pessoa[j].imc,k);                    
                                               for(j=0; j<k; j++)
                                                   fscanf(arq,"%s %f %i", &pessoa[j].nome, &pessoa[j].imc, &temp);
                                                      for(j=0; j<k; j++)
                                                         printf("NOME: %s IMC: %f\n",pessoa[j].nome,pessoa[j].imc);
                 fflush(stdin);  
                                         
                                         }

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.