Kurt Nørmark
Institut for Datalogi, Aalborg Universitet
| Sammendrag Forrige lektion Næste lektion Stikord Referencer Indhold | I denne lektion studerer vi forskellige aspekter af tekststrenge. |
| Strenge og tekststrenge |
| Strenge og tekststrenge Slide Indhold Stikord Referencer |
| Begrebet streng: En streng er en sekvens af data af samme type | ||
| Begrebet tekststreng: En tekststreng er en streng af datatypen tegn |
|
|
| Tekststrenge i C |
| Tekststrenge og arrays Slide Indhold Stikord Referencer |
|
| Figur. En illustration af en nulafsluttet tekststreng i C | ![]() |
|
| Figur. En tekststreng som er placeret 'i midten' af et array of char | ![]() |
|
| Initialisering og assignment af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Forskellige initialiseringer af tekststrenge. |
|
| Program: De fire streng initialiseringer i et helt C program - herunder udskrivninger af de fire tekststrenge. |
|
| Program: Output fra programmet. |
|
| Program: Tilsvarende forsøg på assignments til de fire tekststrenge. |
|
|
| Tekststrenge og pointere Slide Indhold Stikord Referencer |
|
| Program: Et program der ved brug af pointere kopierer strengen "Aalborg" ind midt i en anden streng. |
|
| Program: Output fra programmet. |
|
| Program: Samme program med brug af strcpy. |
|
| Program: Output fra programmet. |
|
|
| Kopiering af tekststreng - med håndkraft Slide Indhold Stikord Referencer |
|
| Figur. En illustration af kopiering af en tekststreng - ved håndkraft med for-løkke. | ![]() |
| Ændringer af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Et program der ændrer det andet tegn i Aalborg fra 'a' til 'A'. |
|
| Program: Hele programmet der ændrer det andet tegn i Aalborg fra 'a' til 'A'. |
|
| Opgave 8.2. Funktionen strrev | Strengomvending består i at bytte om på tegnene i en tekststreng, således at de første tegn ender med at være de sidste. Eksempelvis er strengomvendingen af "streng" lig med "gnerts". Programmer funktionen strrev(char *str), som omvender tegnene i parameteren str. Bemærk at parameteren str både tjener som input og output parameter. Vi ønsker altså at bytte om på tegnene i det char array, som str peger på. |
| Tekststrenge i forhold til tegn Slide Indhold Stikord Referencer |
|
|
| Den tomme streng og NULL Slide Indhold Stikord Referencer |
|
|
| Leksikografisk ordning |
| Leksikografisk ordning af strenge Slide Indhold Stikord Referencer |
|
|
| Lighed af strenge (1) Slide Indhold Stikord Referencer |
|
| Figur. En illustration af reference lighed og strukturel lighed mellem char * variable | ![]() |
| Lighed af strenge (2) Slide Indhold Stikord Referencer |
|
|
| Funktionen strcmp fra string.h Slide Indhold Stikord Referencer |
|
|
|
| Program: Et program der illustrerer den leksikografiske ordning af tekststrenge i C. |
|
| Program: Output fra programmet. |
|
| Opgave 8.3. Din egen udgave af funktionen strcmp | Funktionen strcmp fra string.h sammenligner to tekststrenge med hinanden, som beskrevet på denne slide. Programmer din egen rekursive udgave af strcmp. En rekursiv strcmp funktion programmeres uden brug af while eller for-løkker. |
| Tidligere eksempler |
| Konvertering mellem talsystemer Slide Indhold Stikord Referencer |
|
|
| Program: En funktion der konverterer et tal n i base talsystemet (en streng) til et decimalt tal. |
|
| Program: Hele programmet. |
|
| Udskrivning af enumeration konstanter Slide Indhold Stikord Referencer |
|
|
| Program: En funktion som returnerer en symbolsk ugedag (en streng) givet dagens nummer. |
|
| Program: Hele programmet. |
|
| Biblioteket string.h |
| Oversigt Slide Indhold Stikord Referencer |
|
|
| Sammensætning af tekststrenge - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strcat | ![]() |
| Sammensætning af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Et program der illustrerer strcat og strlen. |
|
| Program: Output fra programmet. |
|
| Kopiering af tekststrenge - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strncpy | ![]() |
| Kopiering af tekststrenge Slide Indhold Stikord Referencer |
| Figur. En illustration af strncpy | ![]() |
| Kopiering af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Et program der illustrerer strcat og strlen. |
|
| Program: Output fra programmet. |
|
| En alternativ funktion til strcpy Slide Indhold Stikord Referencer |
|
| Program: Et funktioner der allokerer plads til og kopierer en streng. |
|
| Program: Hele programmet. |
|
| Program: Output fra programmet. |
|
| Illustration af strncpy (1) - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strncpy | ![]() |
| Illustration af strncpy (2) - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strncpy | ![]() |
| Substring ved brug af strncpy Slide Indhold Stikord Referencer |
|
| Program: Et program der udtrækker en substreng af en streng. Det er essentielt at target initialiseres med nultegn, idet det viser sig, at strncpy ikke overfører et nultegn. |
|
| Program: Output fra programmet. |
|
| Lokalisering af et tegn i en streng - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strchr | ![]() |
| Lokalisering af en delstreng i en streng - illustration Slide Indhold Stikord Referencer |
| Figur. En illustration af strstr | ![]() |
| Lokalisering af en delstreng i en streng Slide Indhold Stikord Referencer |
|
| Program: Et program der leder efter en delstreng af en streng. |
|
| Program: Output fra programmet. |
|
| Andre emner om tekststrenge |
| Arrays af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Et program der allokerer og tilgår et array af tre tekststrenge. |
|
| Figur. En illustration af variablen numbers fra ovenstående program | ![]() |
| Program: Hele programmet. |
|
| Program: Output fra programmet. |
|
|
| Program: Programmet med alternativ array erklæring. |
|
| Program: Output fra det alternative program (0 tegn ændret til N, ? er ukendt værdi). |
|
| Input og output af tekststrenge Slide Indhold Stikord Referencer |
|
| Program: Et program der indlæser og udskriver en tekststreng med scanf og printf. |
|
| Program: Et program der indlæser en line af tekst med gets. |
|
|
| Programparametre Slide Indhold Stikord Referencer |
|
| Program: Et program der udskriver de overførte programparametre. |
|
| Program: Oversættelse og kørsel af programmet. |
|
| Konvertering mellem strenge og tal Slide Indhold Stikord Referencer |
|
|
| Program: Eksempel på konvertering af tekststrenge til tal, og fra tal til tesktstrenge - med atoi/atof/atol og sprintf. |
|
|
| Program: Program output. |
|
| Program: Eksempel på konvertering af tekststrenge til tal, og fra tal til tesktstrenge - med sscanf og sprintf. |
|
| Program: Program output. |
|
| Opgaver Slide Indhold Stikord Referencer |
| Opgave 8.5. Flertals navneord | Skriv et program som oversætter udvalgte engelske navneord fra ental til flertal. Følgende regler skal følges:
Udskriv hvert navneord i både ental og flertal. Afprøv dit program på følgende engelske navneord:
Denne opgave svarer til opgave 5 side 532 i 6. udgave af lærebogen |
| Opgave 8.5. Længste fælles endelse af to ord | Skriv et program med en funktion der finder og returnerer det længste fælles endelse (suffix) af to ord. Funktionen skal have tre parametre. De to ord (to tekststrenge) skal overføres som input parametre. Den længste fælles endelse skal returneres i en output parameter (en tekststreng). (Hvordan markerer du forskellen på en input parameter og en output parameter, som begge er tekststrenge?) Funktionen skal dynamisk allokere plads til tekststrengen med den længste fælles endelse inden den returneres (brug malloc). Eksempelvis er "logi" den længste fælles endelse af ordene "datalogi" og "biologi". Og den længste fælles endelse af "program" og "diagram" er "gram". |
| Samlede referencer Indhold Stikord |
|
Kapitel 8: Tekststrenge
Kursets hjemmeside Forfatteren's hjemmeside Om frembringelsen af disse sider Forrige lektion (top) Næste lektion (top) Forrige lektion (bund) Næste lektion (bund)
Genereret: 6. november 2012, 16:27:43