IB001 Úvod do programování skrze C, Seminární skupiny 09, 10, 11

Týden 10 Alokovanie veľkosti poľa a reťazce

Alokovanie pamate pre pole

  • Funkcia malloc
  • Funkcia realloc
int *pole = (int*)malloc(maxPocet*sizeof(int));
int *tmpPole;	
if ((tmpPole = (int*)realloc(pole, maxPocet*2*sizeof(int))) == NULL) {	//skusime zvacsit
   fprintf(stderr, "Nedostatok pameti\n");
   return -1;
} else {
   pole = tmpPole;	 // ak pamat je presunieme ukazovatel na vacsie pole
}

free(pole);

Reťazce

  • pole znakov char string[100];
  • Definovane pomocou úvozovek: char string[] = "text zakonceny specialnym znakem";
  • Ukončovancí znak '\0'.
  • Dynamicke alkovanie
  • printf("%s", string);
  • Funkce: (nutne #include <string.h> )
    • if (fgets(string, 60, stdin)!=NULL) //nacita max 60 znakov do reazca
    • strlen(string) //vrati pocet znakov v poli
    • strlen(string) //vrati pocet znakov v poli
    • strcpy(string1, string2) //kopirovanie string2 do string1
    • strcat(string1, string2) //priretazenie string2 k string1
    • int strcmp(string1, string2) //porovnanie retazcov == 0 su rovnake
    • char * strchr(string1, int c) //hleda znak c v retazci string 1, ak najde, tak ukazovatel nan, inak NULL
    • char * strstr(string1, string2) //hlada podretazec string2 v retazci string1 (vrati na prvy prvok toho podretazca)
    • double strtod(string1, string2) //prevede retazec na cislo

Priklady

  1. Nacitajte 6 slov, a vypiste kolko z nich obsahuje retazec "izmus"
  2. Nacitajte 7 mien a usporiadajte ich lexikograficky
  3. Nacitajte od uzivatela retazec a upravte ho tak, aby vysledny retazec bol palindrom. (Napoveda: vysledny retazec bude 2- krat vacsi)
  4. Nacitajte 4 mena a k nim 4 datumy. Ulozte do pola. Od uzivatela si vypytajte meno, a ak mate k danemu menu datum, tak ho vypiste. (Mozu to byt narodeniny, svatek..). Mozte skusit vypisat za ako dlho ma svatek najblizsie.