/***************************************************************************
 * File:         vb-string.c
 * Status:       21-mar-2006, pfk.
 *               03-oct-2010, wlm
 * Functie:      Allocatie van een string, gebruik van tekens en tekst.
 ***************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.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));
  if ( regel == NULL) {
        fprintf(stderr,"Alloceren geheugen voor regel \n");
        #ifdef _WIN32
           printf("\n\n");
           system("PAUSE");
        #endif
        exit(0);
  }
  // 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);

  gets(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]);

#ifdef _WIN32
    printf("\n\n");
    system("PAUSE");
#endif

  return (0);
}
