Ir ao conteúdo
  • Cadastre-se

C Ler determinadas linhas de um arquivo


Posts recomendados

Olá, tenho uma atividade para fazer que pede o seguinte: criar um código que abra um arquivo fornecido pelo usuário, e que o usuário defina uma linha inicial e outra final para ser lida nesse arquivo. Ao final, devera ser apresentada essas linhas. Não sei como fazer tal coisa, o mais longe que cheguei foi esse esqueleto. Gostaria de uma ajuda no que estou errando.

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

int main (){
FILE *arquivo;
char nome[100];
int inicial = 0, fim = 0;

fgets (nome, sizeof nome, stdin);

arquivo = fopen (nome, "r");

printf ("linha inicial: ");
scanf ("%i", &inicial);
printf ("linha final: ");
scanf ("%i", &fim);

while (fgets(nome, sizeof nome, arquivo) != EOF ){
    if (fgets (nome, sizeof nome, arquivo) == '\n'){
        for (int i= inicial; i < fim; i++){
            printf ("%s", nome);
        }
    }
}


return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Quando você abre um arquivo em modo leitura "r" os comandos de leitura como fgets começam a ler partir do início do arquivo.

 

Então o que você deve fazer é um for que usa fgets várias vezes para ler todas linhas até a linha anterior a linha inicial, mas não imprime nenhuma delas. Assim você vai chegar na posição da linha inicial.

 

E então use outro for com o fgets para ler as linhas até chegar na linha final, e nesse for todas as linhas lidas são impressas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Estudante0123    tem um erro no seu while ,   lendo com fgets o arquivo não termina com EOF e sim com NULL , então seria assim  :

cont=0;
printf("\n");
while(fgets(nome,sizeof(nome),arquivo) != NULL ){
    if((inicial-1) == cont || (fim-1) == cont)
        printf("%s",nome);
    cont++;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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