1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Erro em função desenvolvida em C

Discussão em 'Programação' iniciada por Tiago Correia, 15 de Fevereiro de 2009. (Respostas: 1; Visualizações: 641)

  1. Ola a todos :)

    Tou a guardar varias listas num ficheiro .dat. Através da função fread, leio todas as listas que criei. contudo, só consigo ler todas as listas uma vez e depois para ler as listas de novo tenho que fechar o ficheiro e abri-lo de novo. Eu queria continuar a ler listas sem ter de estar de realizar este processo. Portanto, quando leio as listas todas, tenho de voltar a posicionar-me de novo no inicio das listas. Eu penso que a função para isso é rewind(*f). Aqui, após ler as listas todas, qdo tento ler a segunda vez aparece-me um erro: "Debug Assertion Failed!...Expression: (_osfile(fh) & FOPEN)". a função que eu realizei para ler as listas é:

    Código:
    [SIZE=2][COLOR=#0000ff]
    [SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] listar(FILE *g)[/COLOR][/SIZE]
    [SIZE=2]{[/SIZE]
    [SIZE=2]system([/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"cls"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
     
    [SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]struct[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Listas lis;[/SIZE]
     
    [SIZE=2]fflush(stdin);[/SIZE]
     
    [SIZE=2]printf([/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"\nListar : "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
     
    [SIZE=2]rewind(g);[/SIZE]
    [SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]while[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (fread(&lis,tamanhoLis,1,g)!=0)[/SIZE]
    [SIZE=2]{ [/SIZE]
    [SIZE=2]apres_dados(lis);[/SIZE]
    [SIZE=2]printf([/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"\n\nQualquer tecla para prosseguir\n"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
    [SIZE=2]getch();[/SIZE]
    [SIZE=2]} [/SIZE]
     
    [SIZE=2]system([/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"cls"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
     
    [SIZE=2]}[/SIZE]
    
    O que tenho de fazer para ler as listas como pretendo?

    Obrigado pela ajuda :D
     
  2. A funcao fseek nao fara o k pretendes? Uma pesquisa no google por fseek devete esclarecer duvidas acerca desta funcao.

    fseek ( fp , ftell(fp) , SEEK_SET ); // Sets the position indicator associated with the stream, ftell Returns the current value of the position indicator of the stream.

    Cumps
     

Partilhar esta Página