/*
 * uzivatelske retezcove funkce
 */

#include <stdio.h>
#include <stdlib.h>
char radek[256], *p;

char *SmazEOLN(char *s) {  // funkce vraci adresu zpracovavaneho retezce
  char *pom = s;
  while (*pom != '\0') pom++;
  pom--;
  if (*pom == '\n') *pom = '\0';
  return s;
}

char *UpString(char *s) {
  char *pom = s;
  while (*pom != '\0') {
    if (*pom>='a' && *pom<='z') *pom -= 'a'-'A';
    pom++;
  }
  return s;
}

int PocetMezer(const char *s) {  // parametr funkce je pouze pro CTENI
  char *pom = (char *)s;
  int n=0;
  while (*pom != '\0') {
    if (*pom ==' ') n++;
    pom++;
  }
  return n;
}

//
// Tato funkce sama alokuje potrebne pametove misto
// - ne uplne standardni chovani funkce - vzdy popiste v komentari
//
char *VytvorRetezec(int pocet, char znak) {
  char *pom;
  int i;
  pom = malloc(pocet+1);
  for (i=0; i<pocet; i++) *(pom+i) = znak;
  *(pom+pocet) = '\0';
  return pom;
}

int main(int argc, char *argv[]){
  int i;
  printf("pocet parametru programu = %d \n", argc);
  for (i=0;i<argc;i++) printf("%d.parametr = %s\n", i,argv[i]);

  while (fgets(radek,256,stdin)!=NULL){
    SmazEOLN(radek);
    UpString(radek);
    printf("'%s'\n", radek);
    printf("pocet mezer = %d \n", PocetMezer(radek));
    p = VytvorRetezec(30,'-');
    printf("%s\n",p);
  }
  return 0;
}