24. september 2002 - 21:18Der er
7 kommentarer og 1 løsning
Læsning og Skrivning til fil
Hej, Jeg vil gerne læse fra og skrive til samme fil. Således at jeg kan ændre en værdi (int) i filen(ikke binær) og gemme den med den nye værdi. Jeg kan læse fra filen med følgende(har det fra en bog):
#include <stdio.h> #include <stdlib.h> main() { int c; FILE *biobil;
Men overstående læser jo kun hver karakter og skriver det så ud. Jeg forstår ikke hvor der erklæres en int c, når man udskriver c som en char. Det giver da ingen mening, eller? Kan man ikke læse filen indhold som en streng og så typecast den til en int? i så fald hvordan? Eller hvordan er det smartes at læse fra en fil når den kun indeholder et tal som der skal laves om på?
Angående dit spørgsmål hvorfor fgetc bruger en int når den kun indlæser en char, så er jeg ikke helt sikker, men jeg kunne forestille mig at det har noget at gøre med at den indlæser en værdi som kan kan have 256 (0-255) forskellige værdier. Hvis der skal være plads til at returnere en fejlkode, har du brug for en større datatype, hvor de så har valgt en int (32bit).
1) Åbner filen med læse/skrive rettigheder 2) Indlæser tallet med fscanf 3) Ændre lidt på tallet 4) "Spoler" filen tilbage :D 5) Udskriver tallet til samme fil med fprintf
fscanf og fprintf virker vist ligesom scanf og printf, med den ene forskel at de lige skal ha' en filpointer
Næste linje: ------------ Hvis du bare har to tal stående i din fil, på hver sin linje kan du læse på den her måde: fscanf(pFile, "%d", &iTallet); fscanf(pFile, "%d", &iTallet2);
Og udskrive dem sådan her: fprintf(pFile, "%d\n", iTallet); fprintf(pFile, "%d", iTallet2);
Bemærk lige det \n jeg indsatte i den første fprintf, for at være sikker på linjeskiftet :)
iResult != 1: ------------- Næ nej... Det er ikke et spørgsmål om true/false. Hvis fscanf gør hvad den skal, helt efter planen skal den returnerer antallet at variable der har fået tildelt en værdi. Det er derfor jeg undersøger om iResult er noget andet end 1, for så må der være et eller andet galt.
Bemærk: fscanf(pFile, "%d %d", &a, &b) Skulle efter planen returnere 2, fordi den burde ha tildelt en værdi til begge variable. Den KAN dog returnere 0 eller 1, hvis dataene i filen ikke passer i forhold til datatyperne (mener jeg det er), således at alle variable ikke kan tildeles noget fornuftigt. (OK blev vist lidt rodet, men find en rigtig beskrivelse af funktionerne, så er du ihvert fald sikker)
Se også http://www.eksperten.dk/spm/253687, som beskrives hvordan du kan læse en tabel af tal, ændre i dem, og derpå skrive dem tilbage til filen igen.
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.