11.1 Læsning af k ord fra fil
Skriv en funktion
int getwords(FILE *ifp, int k, char *words)
der, om muligt, læser k ord fra tekstfilen peget på af ifp. Ordene skal læses over i tekststrengen words (som allokeres af den funktion, som kalder getwords). Hvis det ønskes kan ordene organiseres linievis, eller blot med 'white space' imellem ordene.
Den programmerede funktion skal returnere det faktiske antal af læste ord (som kan være mindre end k).
11.2 En simpel grep funktion
grep er en Unix kommando der søger efter linier i en tekstfil, som matcher en søgestreng. I denne opgave vil vi programmere en meget simpel variant af grep, som udskriver de tekstlinier, i hvilke et bestemt søgeord forekommer.
Vi ønsker at anvende det udviklede program således fra kommandolinien:
search programmering my-file.txt
eller måske snarere:
./search programmering my-file.txt
Dette skal udskrive alle de liner i my-file.txt som indholder strengen "programmering".
Programmet skal anvende program parametre, som forklaret på denne slide.
11.3 Input og Output af structs
struct person {
char *name;
int age;
char sex;
} hvor sex er enten tegnet 'm' eller 'f'. I denne øvelse bliver du bedt om at programmere funktioner, som kan udskrive et antal personer
på en fil, og som efterfølgende kan indlæse disse igen. Konkret, skal der skrives to funktioner
print_person(person *p, FILE *ofp)
person *read_person(FILE *ifp) Du kan vælge en tekst-baseret og linie-orienteret fremgangsmåde, som illustreret ved forelæsningen. Som et noget lettere alternativ kan du vælge at anvende en binær fremgangsmåde ved brug af fwrite og fread.
Overvej hvad der skal til for at anvende fwrite og fread på struct person.
11.4 Tynde matricer
En vilkårlig matrix kan generelt repræsenteres på en tekstfil, med én linie pr. række. Første linie kan angive antallet af rækker og søjler i matricen (altså to heltal). I denne opgave kalder vi dette for den generelle tekstfil repræsentation af vilkårlige matricer.
En tynd matrix er et array af to dimensioner, hvor mange af elementerne er nul.
I denne opgave vil skrive et program der undersøtter en speciel tekstfil repræsentation af tynde matricer på tekstfiler, som i visse tilfælde fylder mindre end den generelle repræsentation af matricer på tekstfiler.
I den nye repræsentation skal den første linie af tekstfilen indeholde dimensionerne af matricen - to heltal - antal rækker og antal søjler. Den anden linie skal angive antallet af elementer i matricen, som ikke er nul. Hver af de efterfølgende linier indholder tre tal: Rækkenummer, søjlenummer, og et tal fra matricen (som ikke er nul).
Skriv først en funktion som læser en matrix fra den generelle repræsentation på en tekstfil, og som udskriver den specielle tynde repræsentation på en ny tekstfil.
Skriv dernæst en funktion som løser det omvendte problem: Læsning af en tynd matrix fra en tekstfil og skrivning af en tilvarende matrix på generel form på en anden tekstfil.
Som et eksempel svarer følgende generelle tekstfil repræsentation af matricen
4 3 0.0 0.0 1.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 3.0 0.0
til følgende specielle tekstfil repræsentation af matricen - som en tynd matrice
4 3 3 1 3 1.000000 3 1 2.000000 4 2 3.000000
Denne opgave svarer til opgave 4 side 679 i 6. udgave af lærebogen
Genereret: Tirsdag 13. november 2012, 16:02:22