diff --git a/20230605/array-param-01.c b/20230605/array-param-01.c new file mode 100644 index 0000000000000000000000000000000000000000..e5a2dc593610b426c5f01c0a0b34cf599a727842 --- /dev/null +++ b/20230605/array-param-01.c @@ -0,0 +1,21 @@ +#include <stdio.h> + +void read_something (int *a) +{ + for (int i = 0; i < 3; i++) + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", a + i); /* andere Schreibweise: &a[i] */ + } +} + +int main (void) +{ + int x[3]; + read_something (x); + printf ("Eingegebene Zahlen:"); + for (int i = 0; i < 3; i++) + printf (" %d", x[i]); + printf ("\n"); + return 0; +} diff --git a/20230605/array-param-02.c b/20230605/array-param-02.c new file mode 100644 index 0000000000000000000000000000000000000000..9a83bd130c6d3cde025c982bf97a30a73ea9e908 --- /dev/null +++ b/20230605/array-param-02.c @@ -0,0 +1,23 @@ +#include <stdio.h> + +#define N 3 + +void read_something (int *a) +{ + for (int i = 0; i < N; i++) + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", a + i); /* andere Schreibweise: &a[i] */ + } +} + +int main (void) +{ + int x[N]; + read_something (x); + printf ("Eingegebene Zahlen:"); + for (int i = 0; i < N; i++) + printf (" %d", x[i]); + printf ("\n"); + return 0; +} diff --git a/20230605/array-param-03.c b/20230605/array-param-03.c new file mode 100644 index 0000000000000000000000000000000000000000..b67c6ddb6f5db169a5d10da860430c53296e507c --- /dev/null +++ b/20230605/array-param-03.c @@ -0,0 +1,28 @@ +#include <stdio.h> + +#define N_MAX 256 + +int read_something (int *a) +{ + int i = 0; + printf ("Zum Beenden: -1 eingeben\n"); + do + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", a + i); /* andere Schreibweise: &a[i] */ + i++; + } + while (a[i - 1] >= 0); + return i - 1; +} + +int main (void) +{ + int x[N_MAX]; + int numbers_read = read_something (x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + return 0; +} diff --git a/20230605/array-param-04.c b/20230605/array-param-04.c new file mode 100644 index 0000000000000000000000000000000000000000..b4e9785a97d83dc9691d64bd3e6132b52ee89e44 --- /dev/null +++ b/20230605/array-param-04.c @@ -0,0 +1,28 @@ +#include <stdio.h> + +#define N_MAX 10 + +int read_something (int *a) +{ + int i = 0; + printf ("Zum Beenden: -1 eingeben\n"); + do + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", a + i); /* andere Schreibweise: &a[i] */ + i++; + } + while (i < N_MAX && a[i - 1] >= 0); + return i - 1; +} + +int main (void) +{ + int x[N_MAX]; + int numbers_read = read_something (x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + return 0; +} diff --git a/20230605/array-param-05.c b/20230605/array-param-05.c new file mode 100644 index 0000000000000000000000000000000000000000..740faf7c09ea0cb9588b9d6e645d97685240c35f --- /dev/null +++ b/20230605/array-param-05.c @@ -0,0 +1,30 @@ +#include <stdio.h> + +#define N_MAX 10 + +int read_something (int *a) +{ + int i = 0; + printf ("Zum Beenden: -1 eingeben\n"); + do + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", a + i); /* andere Schreibweise: &a[i] */ + i++; + } + while (i < N_MAX && a[i - 1] >= 0); + if (a[i - 1] < 0) + i--; + return i; +} + +int main (void) +{ + int x[N_MAX]; + int numbers_read = read_something (x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + return 0; +} diff --git a/20230605/bs-20230605.txt b/20230605/bs-20230605.txt new file mode 100644 index 0000000000000000000000000000000000000000..222e54b9b1a95308e8cd73dde5a878a2bb02c3e4 --- /dev/null +++ b/20230605/bs-20230605.txt @@ -0,0 +1,16 @@ +vorletzte Woche: + - Linux-Kernel: vom Einsprungpunkt der Systemaufrufe + bis zum Callback des Treibermoduls + +heute: + - C-Programmierung: mehrere Bytes zurückgeben + - CVH-Camera: Sicherheits-Update + - Dateisysteme + +C-Programmierung: mehrere Bytes zurückgeben, 05.06.2023, 15:53:45 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Situation: + - Zeigervariable an void-Funktion übergeben + - Aufrufer definiert Variable und übergibt sie an die Funktion + - Länge nicht fest, aber maximale Länge bekannt +--> Funktion könnte die benutzte Länge zurückgeben.