/***************************************************************************/
/* File:         vb-string.c
/* Status:       21-mar-2006, pfk.
/* Functie:      Allocatie van een string, gebruik van tekens en tekst.
/***************************************************************************/

#include <stdio.h>

#define MAXREGELLENGTE 100

int main ()
{
  char teken = 'q';  /* een enkel teken, tussen enkele aanhalingstekens */
  char *regel;       /* tekstregel (of string): pointer naar char */
  int  pos,          /* positie in regel */
       lengte;       /* lengte van regel */

  // allocatie van ruimte voor tekst van "regel"
  regel = (char *) malloc (MAXREGELLENGTE*sizeof(char));

  // vraag tekst aan gebruiker en zet die tekst in "regel"
  // een string wordt altijd afgesloten door cijfer 0, vandaar dat er
  // een teken minder voor tekst beschikbaar is
  printf ("Geef een tekstregel in van maximaal %d tekens:\n",
	  MAXREGELLENGTE-1);
  scanf ("%s", regel);

  // bepaal het aantal ingegeven tekens (= de lengte van "regel")
  lengte = strlen (regel);
  printf ("De regel is %d tekens lang.\n", lengte);

  // kijk of het teken in de regel voorkomt
  for (pos=0; pos<lengte; pos++)
  {
    if (teken == regel[pos])
    {
      printf ("Teken '%c' gevonden op positie %d van regel '%s'.\n",
              teken, pos+1, regel);
      break;  // spring uit loop, "pos" houdt waarde buiten de loop
    }
  }

  // als pos de hele regel doorlopen heeft, is het teken niet gevonden,
  // druk dan een boodschap af
  if (pos == lengte)
    printf ("Teken '%c' is niet in regel '%s' gevonden!\n",
              teken, regel);

  // een string wordt altijd afgesloten met cijfer 0 (= teken '\0')
  printf ("Het teken dat de string afsluit, is cijfer %d.\n", regel[lengte]);

  return (0);
}
