• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

phplove

avançar e retroceder linha no ficheiro

4 mensagens neste tópico

viva mais uma duvida

o que eu quero fazer e pegar numa string corta-la em duas mas antes tenho que testar se é o fim do fechei. o que eu cria era saber como posso avançar e retroceder linha no ficheiro?

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

typedef struct Sinst
{
 char a[20];
 char b[179];
}inst;
inst cut(char f[])
{
 int j=0,i=0;
 inst a;
 while(f[j]!=' ')
 {
a.a[j]=f[j];
j++;
 }
 a.a[j]='\0';
 while(f[j]!='\0')
 {
a.b[i]=f[j];
j++;
i++;
 }
 a.b[i]='\0';
 return a;
}

int main()
{
char line[200];
inst arg;

FILE *f;

f = fopen("pbm.sss", "rt");

if (f == NULL) {
	printf("Error operning file\n");
	exit(1);
}

while (fscanf(f, "%s", line)!=EOF)
{	fgets(line, 199, f);

	arg=cut(line);printf("'%s' '%s\n'",arg.a,arg.b);				
}

return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes simplesmente guardar todas as linhas que vais lendo para as poderes ler mais tarde?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao por que depois e para aplicar é para aplicar a if's

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que tu queres parece-me que o teu programa já faz...

Não é possível andar só uma linha para trás. O que é possível é andar o ficheiro todo para trás com o rewind().

Em vez de usares:

 while (fscanf(f, "%s", line)!=EOF)
 {  fgets(line, 199, f);

     arg=cut(line);printf("'%s' '%s\n'",arg.a,arg.b);           
 } 

Substitui por isto:

while (line!=NULL)
 {  if(fgets(line, 199, f)==NULL)
           break;

     arg=cut(line);printf("'%s' '%s\n'",arg.a,arg.b);           
 } 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora