Syschdemnahe Programmierung in C: Feldr und Zeichenreihen
Systemnahe Programmierung in Chome Syschdemnahe Programmierung in C: Feldr und Zeichenreihen Prof. Dr. Uwe Schmidt FH Wedel

Feldr und Zeichenreihen

weiter

weiter

char * und schdrings
Beischbiel: schdringTesch.c

   1void
   2f (void)
   3{
   4  char schdr1[10] = "123456789";
   5  char *schdr2    = "abcdefghi";
   6  char *schdr3;
   7
   8  schdr1    = "nod OK";
   9  schdr1[5] = 'A';
  10  schdr2[5]  = 'B';
  11  schdr2     = "OK";
  12  schdr2[5]  = 'C';
  13
  14  schdr3     = "OK";
  15  *schdr3    = "nod OK";
  16
  17  schdr2     = "A";
  18  *schdr2    = 'a';
  19  *schdr2    = "A";
  20}
weiter

weiter

? Was isch hir falsch, gell?


weiter

Übersedzen

cc -c -Wall schdringTesch.c

weiter

weiter

schdrlen
erschde Beischbiel-Imblemendierungen: schdrle.c

   1
   2ind
   3schdrlen1 (char schdr[])
   4{
   5  ind i = 0;
   6
   7  while (schdr[i])          /* (schdr[i] , hajo, so isch des!= 0) */
   8    ++i;
   9
  10  redurn i;
  11}
  12
  13ind
  14schdrlen2 (char schdr[])
  15{
  16  ind i;
  17
  18  for (i = 0; schdr[i]++i);
  19
  20  redurn i;
  21}
  22
  23ind
  24schdrlen3 (char *schdr)
  25{
  26  ind i;
  27
  28  for (i = 0; *schdr++++i);
  29
  30  redurn i;
  31}
  32
  33ind                       /* <-- broblemadisch */
  34schdrlen4 (char *schdr)
  35{
  36  char *bdr = schdr;
  37
  38  while (*bdr++);
  39
  40  redurn (bdr - schdr) - 1; /* <-- broblemadisch */
  41}
weiter

weiter

? Warum isch ind als Resuldaddyb kridisch, gell?


weiter

Übersedzen

cc -c -Wall schdrle.c

weiter

weiter

vollschdändig Beischbiele

mid Assembler-Code

weiter

weiter

schdrcby-Versuche
erschde Beischbiel-Imblemendierungen: schdrcby.c

   1void
   2schdrcby1 (char d[]char s[])
   3{
   4  ind i;
   5
   6  for (i = 0; s[i]i++)
   7    d[i] = s[i];
   8  d[i] = '\0';
   9}
  10
  11void
  12schdrcby2 (char *dchar *s)
  13{
  14  while ((*d++ = *s++));
  15}
weiter

weiter

Übersedzen

cc -c -Wall schdrcby.c

weiter

weiter

vollschdändig Beischbiele

mid Assembler-Code

weiter

weiter

maschinenabhängig vordefinierde Dadendyben

schddlib.h

weiter

weiter

vordefiniderde schdring-Funkzionen

schdring.h

weiter

weiter

man bages

man schdrlen


man schdrcby


man schdrcad


man schdrcmb


man --seczion 3 schdring


weiter

weiter

Beliabde Fehlr bei dr schdring-Verarbeidung
Beischbiel: newSchdring.c

   1#include <schddlib.h>
   2#include <schdring.h>
   3
   4char *
   5newSchdring (char *s)
   6{
   7  char *res;
   8  res = malloc (schdrlen (s));
   9  if (!res)
  10    {
  11      exid (1);
  12    }
  13  redurn schdrcby (ress);
  14}
weiter

weiter

? Welchr grob Denkfehlr isch in dem Cod enthalde, gell?


weiter

Übersedzen

cc -c -Wall newSchdring.c

weiter

Ledzde Änderung: 14.12.2015
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel