diff --git a/20231019/arrays-05a.c b/20231019/arrays-05a.c
new file mode 100644
index 0000000000000000000000000000000000000000..8260614a5a9480954812ad3f26c1e0ebe0ca33b1
--- /dev/null
+++ b/20231019/arrays-05a.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  int prime[6] = { 2, 3, 5, 0, 7, 11 };
+  for (int *p = prime; *p; p++)
+    printf ("%d\n", *p);
+  return 0;
+}
diff --git a/20231019/arrays-05b.c b/20231019/arrays-05b.c
new file mode 100644
index 0000000000000000000000000000000000000000..77e4c7c635611bc418d07561732f5b7d5fc28f36
--- /dev/null
+++ b/20231019/arrays-05b.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  int prime[5] = { 2, 3, 5, 7, 11 };
+  for (int *p = prime; *p; p++)
+    printf ("%d\n", *p);
+  return 0;
+}
diff --git a/20231019/arrays-05c.c b/20231019/arrays-05c.c
new file mode 100644
index 0000000000000000000000000000000000000000..8ba13348f3e7f39817985c13b0bb04670427e0b5
--- /dev/null
+++ b/20231019/arrays-05c.c
@@ -0,0 +1,15 @@
+
+#include <stdio.h>
+
+int main (void)
+{
+  int pflll[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
+  int prime[8] = { 2, 3, 5, 7, 11, 13, 17, 19 };
+  printf ("prime:\n");
+  for (int *p = prime; *p; p++)
+    printf ("%d\n", *p);
+  printf ("pflll:\n");
+  for (int *q = pflll; *q; q++)
+    printf ("%d\n", *q);
+  return 0;
+}
diff --git a/20231019/fhello.txt b/20231019/fhello.txt
new file mode 100644
index 0000000000000000000000000000000000000000..af5626b4a114abcb82d63db7c8082c3c4756e51b
--- /dev/null
+++ b/20231019/fhello.txt
@@ -0,0 +1 @@
+Hello, world!
diff --git a/20231019/files-01.c b/20231019/files-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..6548d9c81c73a7f3da8b1b2e62290bc8029d11f0
--- /dev/null
+++ b/20231019/files-01.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  fprintf (f, "Hello, world!\n");
+  fclose (f);
+  return 0;
+}
diff --git a/20231019/files-02.c b/20231019/files-02.c
new file mode 100644
index 0000000000000000000000000000000000000000..6bd3fc97506fab7643dfe4d59a957cfa1a600750
--- /dev/null
+++ b/20231019/files-02.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+    }
+  return 0;
+}
diff --git a/20231019/files-03.c b/20231019/files-03.c
new file mode 100644
index 0000000000000000000000000000000000000000..dad47ea0323d4a7617d2633feb867a50d6f7139c
--- /dev/null
+++ b/20231019/files-03.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+    }
+  else
+    printf ("Fehlermeld!\n");
+  return 0;
+}
diff --git a/20231019/files-04.c b/20231019/files-04.c
new file mode 100644
index 0000000000000000000000000000000000000000..31e648038015326734ec24ae68bf20ceb6580cb6
--- /dev/null
+++ b/20231019/files-04.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+    }
+  else
+    fprintf (stderr, "Fehlermeld!\n");
+  return 0;
+}
diff --git a/20231019/files-05.c b/20231019/files-05.c
new file mode 100644
index 0000000000000000000000000000000000000000..46b01f8c194625bf152b5bab3fb78eaa107886de
--- /dev/null
+++ b/20231019/files-05.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <errno.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+    }
+  else
+    fprintf (stderr, "Fehler Nr. %d\n", errno);
+  return 0;
+}
diff --git a/20231019/files-06.c b/20231019/files-06.c
new file mode 100644
index 0000000000000000000000000000000000000000..ec3e8a75337d699d4cade3e6ebadaaaef196ffaa
--- /dev/null
+++ b/20231019/files-06.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+    }
+  else
+    {
+      char *msg = strerror (errno);
+      fprintf (stderr, "Fehler: %s\n", msg);
+    }
+  return 0;
+}
diff --git a/20231019/files-07.c b/20231019/files-07.c
new file mode 100644
index 0000000000000000000000000000000000000000..607ffbd466e3c8d86f54b37297dea559bc2d3352
--- /dev/null
+++ b/20231019/files-07.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+      return 0;
+    }
+  else
+    {
+      char *msg = strerror (errno);
+      fprintf (stderr, "Fehler: %s\n", msg);
+      return errno;
+    }
+}
diff --git a/20231019/files-07.txt b/20231019/files-07.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b8f268c1b5e29e4c83472ac85753873e317a4dc2
--- /dev/null
+++ b/20231019/files-07.txt
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (f)
+    {
+      fprintf (f, "Hello, world!\n");
+      fclose (f);
+      return 0;
+    }
+  else
+    {
+      char *msg = strerror (errno);
+      fprintf (stderr, "Fehler: %s\n", msg);
+      return errno;
+    }
+}
+cassini/home/peter/bo/2023ws/hp/20231019> gcc -Wall -O files-07.c -o files-07
+cassini/home/peter/bo/2023ws/hp/20231019> ./files-07
+Fehler: Permission denied
+cassini/home/peter/bo/2023ws/hp/20231019> echo $?
+13
+cassini/home/peter/bo/2023ws/hp/20231019> rm fhello.txt
+rm: reguläre Datei (schreibgeschützt) 'fhello.txt' entfernen? y
+cassini/home/peter/bo/2023ws/hp/20231019> ./files-07
+cassini/home/peter/bo/2023ws/hp/20231019> echo $?
+0
+cassini/home/peter/bo/2023ws/hp/20231019> ls -l fhello.txt
+-rw-r--r-- 1 peter peter 14 19. Okt 15:56 fhello.txt
+cassini/home/peter/bo/2023ws/hp/20231019> chmod -w fhello.txt
+cassini/home/peter/bo/2023ws/hp/20231019> ls -l fhello.txt
+-r--r--r-- 1 peter peter 14 19. Okt 15:56 fhello.txt
+cassini/home/peter/bo/2023ws/hp/20231019> ./files-07
+Fehler: Permission denied
+cassini/home/peter/bo/2023ws/hp/20231019> echo $?
+13
+cassini/home/peter/bo/2023ws/hp/20231019>
diff --git a/20231019/files-08.c b/20231019/files-08.c
new file mode 100644
index 0000000000000000000000000000000000000000..383cb352d1973225aaeef9c01373c879a10fd433
--- /dev/null
+++ b/20231019/files-08.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <errno.h>
+#include <error.h>
+
+int main (void)
+{
+  FILE *f = fopen ("fhello.txt", "w");
+  if (!f)
+    error (errno, errno, "cannot open file");
+  fprintf (f, "Hello, world!\n");
+  fclose (f);
+  return 0;
+}
diff --git a/20231019/params-00.c b/20231019/params-00.c
new file mode 100644
index 0000000000000000000000000000000000000000..c1e45bf91d0d2d6c87dbe47fd0500dac073860cd
--- /dev/null
+++ b/20231019/params-00.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main (int argc, char **argv)
+{
+  printf ("%s\n", *argv);
+  return 0;
+}
diff --git a/20231019/params-01.c b/20231019/params-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..e6e64ba029e1042aff60960fc8b7c3d4d5d8e2e2
--- /dev/null
+++ b/20231019/params-01.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (int argc, char **argv)
+{
+  printf ("argc = %d\n", argc);
+  for (int i = 0; i < argc; i++)
+    printf ("argv[%d] = \"%s\"\n", i, argv[i]);
+  return 0;
+}
diff --git a/20231019/params-02.c b/20231019/params-02.c
new file mode 100644
index 0000000000000000000000000000000000000000..3a52b5577b79ad0025786c830ae09d46737d1f26
--- /dev/null
+++ b/20231019/params-02.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (int argc, char *argv[])
+{
+  printf ("argc = %d\n", argc);
+  for (int i = 0; i < argc; i++)
+    printf ("argv[%d] = \"%s\"\n", i, argv[i]);
+  return 0;
+}
diff --git a/20231019/params-03.c b/20231019/params-03.c
new file mode 100644
index 0000000000000000000000000000000000000000..0e932b379ce3c7381241c8d8d58d2a8cad4a2f76
--- /dev/null
+++ b/20231019/params-03.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (int argc, char **argv)
+{
+  printf ("argc = %d\n", argc);
+  for (int i = 0; *argv; i++, argv++)
+    printf ("argv[%d] = \"%s\"\n", i, *argv);
+  return 0;
+}
diff --git a/20231019/side-effects-16.c b/20231019/side-effects-16.c
new file mode 100644
index 0000000000000000000000000000000000000000..09d985fad681138e9a922a7f21e2379d474604b0
--- /dev/null
+++ b/20231019/side-effects-16.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+void add_verbose (int a, int b)
+{
+  printf ("%d + %d = %d\n", a, b, a + b);
+}
+
+int main (void)
+{
+  add_verbose (3, 7);
+  return 0;
+}
diff --git a/20231019/side-effects-17.c b/20231019/side-effects-17.c
new file mode 100644
index 0000000000000000000000000000000000000000..11d4d45cf9dbf566d29c5b8e27a70e3617067d40
--- /dev/null
+++ b/20231019/side-effects-17.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int add_verbose (int a, int b)
+{
+  printf ("%d + %d = %d\n", a, b, a + b);
+}
+
+int main (void)
+{
+  add_verbose (3, 7);
+  return 0;
+}
diff --git a/20231019/side-effects-18.c b/20231019/side-effects-18.c
new file mode 100644
index 0000000000000000000000000000000000000000..5b4322f1db9ea2cdda1f6a5c7257c51c2e332879
--- /dev/null
+++ b/20231019/side-effects-18.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+int add_verbose (int a, int b)
+{
+  printf ("%d + %d = %d\n", a, b, a + b);
+  return 42;
+}
+
+int main (void)
+{
+  add_verbose (3, 7);
+  return 0;
+}
diff --git a/20231019/strings-01.c b/20231019/strings-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..81bc3cda8affb6268786ac989dd2907d9a84783a
--- /dev/null
+++ b/20231019/strings-01.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char hello[] = "Hello, world!\n";
+  for (char *p = hello; *p; p++)
+    printf ("%d", *p);
+  return 0;
+}
diff --git a/20231019/strings-02.c b/20231019/strings-02.c
new file mode 100644
index 0000000000000000000000000000000000000000..f1332bcc920a29a78ef749a7b92a88a07f0e4238
--- /dev/null
+++ b/20231019/strings-02.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char hello[] = "Hello\x00, world!\n";
+  for (char *p = hello; *p; p++)
+    printf ("%d", *p);
+  return 0;
+}
diff --git a/20231019/strings-03.c b/20231019/strings-03.c
new file mode 100644
index 0000000000000000000000000000000000000000..4df32974a15ef2752512cc8b9889381b5a0917cd
--- /dev/null
+++ b/20231019/strings-03.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char hello[] = "Hello, world!\n";
+  for (char *p = hello; *p; p++)
+    printf ("%c", *p);
+  return 0;
+}
diff --git a/20231019/strings-04.c b/20231019/strings-04.c
new file mode 100644
index 0000000000000000000000000000000000000000..5c36db92dac8129b66d1f0ff6b709534b9e1bdb3
--- /dev/null
+++ b/20231019/strings-04.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char hello[] = { 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33, 10, 0 };
+  for (char *p = hello; *p; p++)
+    printf ("%c", *p);
+  return 0;
+}
diff --git a/20231019/strings-05.c b/20231019/strings-05.c
new file mode 100644
index 0000000000000000000000000000000000000000..5c9a7109872f32cf1a2262c4ef61cd24c60a3ab5
--- /dev/null
+++ b/20231019/strings-05.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char hello[] = { 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33, 10, 0 };
+  for (char *p = hello; *p; p++)
+    printf (" %02x", *p);
+  printf ("\n");
+  return 0;
+}
diff --git a/20231019/strings-06.c b/20231019/strings-06.c
new file mode 100644
index 0000000000000000000000000000000000000000..268aa0dd98f39a5376f5988fa861b3b48b7a9fe4
--- /dev/null
+++ b/20231019/strings-06.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+
+int main (void)
+{
+  char hello[] = "Hello, world!\n";
+
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  return 0;
+
+  printf ("%s\n", hello + 7);
+  printf ("%zd\n", strlen (hello + 7));
+
+  hello[5] = 0;
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  return 0;
+}
diff --git a/20231019/strings-07.c b/20231019/strings-07.c
new file mode 100644
index 0000000000000000000000000000000000000000..d9bbb48f6f45cc3aec24a3218bd7b0adc9445d0a
--- /dev/null
+++ b/20231019/strings-07.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+
+int main (void)
+{
+  char hello[] = "Hello, world!\n";
+
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  printf ("%s\n", hello + 7);
+  printf ("%zd\n", strlen (hello + 7));
+
+  return 0;
+
+  hello[5] = 0;
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  return 0;
+}
diff --git a/20231019/strings-08.c b/20231019/strings-08.c
new file mode 100644
index 0000000000000000000000000000000000000000..dd05111f79e0573d616522593362f6f93beb89e7
--- /dev/null
+++ b/20231019/strings-08.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+int main (void)
+{
+  char hello[] = "Hello, world!\n";
+
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  printf ("%s\n", hello + 7);
+  printf ("%zd\n", strlen (hello + 7));
+
+  hello[5] = 0;
+  printf ("%s\n", hello);
+  printf ("%zd\n", strlen (hello));
+
+  return 0;
+}
diff --git a/20231019/structs-01.c b/20231019/structs-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..4e014871552a86fa1b031c58d90274622b67309f
--- /dev/null
+++ b/20231019/structs-01.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+typedef struct
+{
+  char day, month;
+  int year;
+}
+date;
+
+int main (void)
+{
+  date today = { 19, 10, 2023 };
+  printf ("%d.%d.%d\n", today.day, today.month, today.year);
+  return 0;
+}
diff --git a/20231019/structs-02.c b/20231019/structs-02.c
new file mode 100644
index 0000000000000000000000000000000000000000..00e0bfecfc64464c668ba88e8a741481b919b574
--- /dev/null
+++ b/20231019/structs-02.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+typedef struct
+{
+  char day, month;
+  int year;
+}
+date;
+
+void set_date (date *d)
+{
+  (*d).day = 17;
+  (*d).month = 10;
+  (*d).year = 2022;
+}
+
+int main (void)
+{
+  date today;
+  set_date (&today);
+  printf ("%d.%d.%d\n", today.day, today.month, today.year);
+  return 0;
+}
diff --git a/20231019/structs-03.c b/20231019/structs-03.c
new file mode 100644
index 0000000000000000000000000000000000000000..7decf4b72015984f5c733873dfb6eb0c856f9f3b
--- /dev/null
+++ b/20231019/structs-03.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+typedef struct
+{
+  char day, month;
+  int year;
+}
+date;
+
+void set_date (date *d)
+{
+  d->day = 17;
+  d->month = 10;
+  d->year = 2022;
+}
+
+int main (void)
+{
+  date today;
+  set_date (&today);
+  printf ("%d.%d.%d\n", today.day, today.month, today.year);
+  return 0;
+}
diff --git a/20231019/variables-01.c b/20231019/variables-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..fe8f18ab9562d63a15d0c4b9a227d9f64b398ea7
--- /dev/null
+++ b/20231019/variables-01.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int main (void)
+{
+  int a;
+  printf ("a = %d\n", a);
+  return 0;
+}
diff --git a/20231019/variables-02.c b/20231019/variables-02.c
new file mode 100644
index 0000000000000000000000000000000000000000..dd0c8085d48ca6807c2410779b7101e839b23cc1
--- /dev/null
+++ b/20231019/variables-02.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int a;
+
+int main (void)
+{
+  printf ("a = %d\n", a);
+  return 0;
+}