#30 Funktionen für Arrays und Zeichenketten Flashcards

1
Q

Welche Funktionen gibt es für Arrays?

A

Kopierfunktionen:
void *memcpy(void *dest, const void *src, size_t n);
void *memmove(void *dest, const void *src, size_t n);
- kopieren n Bytes, Speicherbereiche dürfen sich bei memcpy nicht überlappen
- sind auch für andere Arrays als Strings anwendbar
Achtung: das Stringende-Zeichen \0 wird nicht beachtet!
- Funktionsdefinitionen in string.h

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind die Kopierfunktionen für Zeichenketten?

A

char *strcpy(char *dest, const char *src);
- kopiert Zeichenkette inklusive abschließendem ‘\0’
char *strncpy(char *dest, const char *src, size_t n);
- kopiert maximal n Zeichen, ggf. wird mit Nullen aufgefüllt
- Vorsicht: hat src keine Null in den ersten n Zeichen, ist dest nicht
Nullterminiert!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was sind Funktionen zum Aneinanderhängen von Zeichenketten?

A

char *strcat(char *dest, const char *src);
- hängt die Zeichenkette src hinten an dest an
char *strncat(char *dest, const char *src, size_t n);
- hängt maximal n Zeichen der Zeichenkette src hinten an dest an, fügt
\0 hinzu
- Achtung: Die Zielzeichenkette muss genügend Platz für beide Zeichenketten
und das abschließende \0 haben!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welche Vergleichsfunktionen gibt es für Zeichenketten?

A

int strcmp(const char *s1, const char *s2);
- Vergleicht zwei mit \0 terminierte Zeichenketten
int strncmp(const char *s1, const char *s2, size_t n);
- Vergleicht zwei mit \0 terminierte Zeichenketten, maximal n Zeichen
int memcmp(const void *s1, const void *s2, size_t n);
- Vergleicht die ersten n Zeichen von zwei beliebigen Arrays

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welchen Rückgabewert erhalten die Vergleichsfunktionen strcmp, strncmp und memcmp?

A

strcmp:
< 0, wenn s1 kleiner als s2 (d.h. alphabetisch s1 vor s2 kommt, wenn nur
Buchstaben A-Z verwendet werden)
strncmp:
> 0, wenn s1 größer als s2 (d.h. alphabetisch s1 nach s2 kommt, wenn nur
Buchstaben A-Z verwendet werden)
memcmp:
0, wenn s1 gleicher Inhalt wie s2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welche Suchfunktionen von Zeichenketten gibt es? Nenne jeweils deren Rückgabewert.

A

char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
Rückgabewert: Zeiger auf erstes/letztes Auftreten von c in s
char *strpbrk(const char *s, const char *accept);
Rückgabewert: Zeiger auf erstes Auftreten eines der Zeichen aus accept in s
char *strstr(const char *haystack, const char *needle);
Rückgabewert: Zeiger auf erstes Auftreten von needle in haystack

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie sieht die Funktion für die Länge einer Zeichenkette aus? Nenne auch den Rückgabewert.

A

size_t strlen(const char *s);
Rückgabewert: Länge der Zeichenkette s

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist die Funktion für das Auffüllen eines Feldes?

A

void *memset(void *s, int c, size_t n);
Füllt die ersten n Bytes von s mit c

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Nenne die Ein-/Ausgabefunktionen von Zeichenketten.

A

int puts(char *s);
- schreibt die Zeichenkette s und einen nachfolgenden Zeilenumbruch auf den Bildschirm
char *gets(char *s);
- liest eine Zeichenkette und speichert sie in s. Das Return der Eingabe wird in \0
umgewandelt.
Vorsicht: Wenn eingegebener Text länger ist als der Speicherplatz von s, wird über das
Ende von s hinaus in den Speicher geschrieben => Sicherheitsrisiko. Daher besser
folgende Funktion verwenden:
char *fgets(char *s, int size, FILE *stream);
- Für stream verwende stdin, Details im Kapitel Dateioperationen
- Liest bis zum Zeilenumbruch, aber maximal size-1 Zeichen
- \n bleibt erhalten, fügt \0 am Ende an

Funktionsdefinitionen in stdio.h

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie kann man formatiert in strings schreiben?

A

Mit sprintf formatiert man in den String str
Syntax: int sprintf(char* str, const char * format, …);
Achtung: Buffer overflow vermeiden!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Womit kann man Zeichenketten in Ganzzahlen und in Gleitkommazahlen umwandeln?

A

Zeichenkette in Ganzzahl umwandeln:
- int atoi(const char *s)
- long atol(const char *s)
- long strtol(const char *s, char **endp, int base)
- unsigned long strtoul(const char *s, char **endp, int base)

Zeichenkette in Gleitkommazahl umwandeln:
- double atof(const char *s)
- double strtod(const char *s, char **endp)

Beschreibung:
- wandelt Zeichenkette bis zum ersten nichtnumerischen Zeichen
- liefert 0, wenn kein numerisches Zeichen
- s: Zeichenkette
- endp: zeigt auf erstes Zeichen, das nicht konvertiert wurde
- base: Basis des Zahlsystems (2-36, 0 automatische Erkennung)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly