Ir ao conteúdo
  • Cadastre-se
stardark17

C Analisar as linhas de um arquivo

Recommended Posts

Pessoal, preciso de um help para analisar as linhas de um arquivo.
O problema é o seguinte, eu tenho um arquivo com uma coluna e algumas linhas, fiz a leitura do arquivo. Agora eu preciso fazer uma analise de linha por linha. Por exemplo:
Eu quero os números maiores que 4, tenho os seguintes números:
5
2
1
8
Linha 1 = maior
Linha 2 = menor
Linha 3 = menor
...
Eu pensei em fazer um FOR pra varrer a coluna, e depois IF pra comprar. Mas não sei como colocar isso por se tratar de um arquivo.
Espero ter sido claro na explicação.
Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>
#include <stdlib.h>



int main(int argc, char *argv[]) {
	FILE *file;
	file = fopen ("result.txt", "r");
	int n1;
	fscanf (file, "%d\n",&n1);
	printf ("%d\n",n1);
	while (fscanf(file, "%d\n",&n1)!=EOF )
			printf ("%d\n",n1);;
/* if (n1>4) 
 printf ("Maior",n1);
 else 
 printf ("Menor",n1);
 */
	fclose(file);
	return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

prove com esse:
 

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



int main ( int argc, char *argv[] ) {
    FILE *file;
    file = fopen ( "result.txt", "r" );
    int n1;
    
    int i = 0;
    
    while ( fscanf ( file, "%d\n", &n1 ) != EOF ) {
        i++;
        printf ( "linha %d\n", i);;
        
        if ( n1 <= 4 )
            printf ( "Menor ou igual", n1 );
        else
            printf ( "Maior", n1 );
    }
    
    fclose ( file );
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu amigão, deu certo!

E eu conseguiria ler dessa forma de 2 em 2 ou 3 em 3, por exemplo?
4
7
2
9
2
3
Lendo de 3 em 3:
Dos 3 primeiros, apenas 1 é menor do que 4. Dos 3 segundos, 2 são menores do que quatro...
Eu tentei dessa forma, seguindo a sua dica:
 

	FILE *file;
    file = fopen ( "result.txt", "r" );
    int n1,i,n,cont;
    cont = 0;
     i = 0;
    
    while ( fscanf ( file, "%d\n", &n1 ) != EOF ) {

		if (n1<4){
		cont = cont+1;
	}	
	}
  printf ("%d numeros de menores que 4\n", cont);

  fclose ( file );

porém esse lê de 1 em 1 apenas e me da o resultado total contado de todas as linhas. 
Eu tentei mudar o i para :

i+=3

Mas ele lé um número a cada 3, e não de 3 em 3.

Alguém poderia me ajudar novamente?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×