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
- Nacitajte 6 slov, a vypiste kolko z nich obsahuje retazec "izmus"
- Nacitajte 7 mien a usporiadajte ich lexikograficky
- Nacitajte od uzivatela retazec a upravte ho tak, aby vysledny retazec bol palindrom. (Napoveda: vysledny retazec bude 2- krat vacsi)
- 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.