27. oktober 2002 - 13:27Der er
4 kommentarer og 1 løsning
læs og skriv i en fil.....????
C programmering:
Hvordan skriver man altid i starten af en fil, og skubber den allerede eksisterende tekst nedad? Eller, hvordan læser man altid sidste linje i en fil????
Du kan ikke skubbe data ind i starten af filen. Du bliver nødt til at lave en ny fil med de nye linier + alle de gamle linier. Men den nye fil kan naturligvis godt hedde det samme som den gamle.
Det kan godt være lidt tricky at læse den sidste linie i en fil, men det kan gøres.
Sidste udvej er naturligvis at læse alle linierne og den sidste linie inden EOF er den sidste linie.
Men normalt kan man gøre noget smartere.
F.eks. vil man ofte kunne læse den sidste store chunk af en fil f.eks. 5 KB og så søge baglæns efter en linie-separator (CR LF på DOS, LF på Unix etc.).
Andre gange kan man basere sig på, at alle records er lige lange. Og så ved man hvor sidste record starter.
Hvis du selv kontrollerer filens indhold 100%, så kan du jo skrive i de 2 sidste bytes et offset til, hvor sidste record starter.
Så det bør kune lade sig gøre, men den optimale kode afhænger af: - operativ-system - filens indhold m.v.
Hvis du giver lidt mere info, så vil jerg gerne prøve at lave et eksempel.
Hey arne_v, det vi gerne vil have op at køre er en fil som logger aktivitet på en server. Denne aktivitet skal så i et givent interval returnere hvad der er sket siden sidste skriv. "puha den er led" Hvis du nu vil have flere point kan du så også svare på hvorledes vi evt. får et program til at opstarte en af de interne processer op i et nyt vindue for sig selv :-))
Jeg vil anbefale jer, at arbejde lidt på at gøre programmet mere robust førend i tager det i seriøs brug.
Og husk, at det bygger på en forudsætning om at man kan åbne en text fil som binær fil og finde records via delimiter '\n'. Det gælde for Unix. Men ikke nødvendigvis på andre platforme.
DOS er dog ret nem at konvertere til da man bare skal bruge \r\n i.s.f. \n.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.