MERKKIJONOJEN MUOKKAUS
HUOM! Ylläolevien funktioiden käyttö edellyttää, että otsikkotiedosto string.h on sisällytetty ohjelmaan. Tiedosto lisää tarvittavat funktioprototyypit ohjelman käyttöön.Funktio Kuvaus strlen() palauttaa merkkijonon pituuden strchr() hakee merkin ensimmäisen esiintymiskohdan strcmp() vertaa kahta merkkijonoa strcat() liittää merkkijonon toiseen strcpy() kopioi merkkijonon toiseen
strlen( ) FUNKTIO
Funktio palauttaa merkkijonon pituuden alkukohdasta loppumerkkiin ( '\0').string on merkkitaulukko (tai -jono), jonka pituus halutaan määrittää, ja tunniste size tallentaa tuloksena olevan merkkijonon pituuden.size = strlen(string);
Esim.#include <string.h> int x; char str[45] = ”Merkkijonon sisältö”; x = strlen(str);
/* Merkkijonon pituus */ #include <stdio.h> #include <string.h> int main() { char str1[] = "Tama on testi"; printf("%s \n on %d merkkia pitka", str1, strlen(str1)); getch(); return 0; }
strchr( ) FUNKTIO
Funktiota strchr() käytetään etsimään tietyn merkin ensimmäinen esiintymispaikka merkkijonossa. Merkkijonon loppumerkki (NULL) sisältyy etsintään, joten funktio soveltuu myös merkkijonon NULL-merkin etsintään. Mikäli kyseinen merkki löydetään, funktio palauttaa osoittimen merkin esiintymiskohtaan merkkijonossa.Funktion strchr() määrittely:
Lauseessa *s on osoitin merkkiin ja c on etsittävä merkki. Funktio palauttaa osoittimen haluttuun merkkijonon merkkiin.char *strchr(const char *s, int c);
Esimerkki-ohjelma (alla). Ohjelma pyytää kirjoittamaan tekstiä, tekstin syöttäminen lopetetaan painamalla ENTER. Tämän jälkeen ohjelma pyytää kirjainta, joita etsitään annetusta tekstistä. Ohjelma näyttää sanat joissa kirjain esiintyy.include <string.h> include <stdio.h> char str[15]; char *ptr; strcpy(string, ”Jack ja Jill”); ptr = strchr(string, ‘n’); if (ptr) printf(”Merkki ‘n’ on kohdassa: %d\n”, ptr->string); else printf(”Merkkiä ei löytynyt\n”);
/* Merkin etsiminen merkkijonosta */ #include <string.h> #include <stdio.h> int main() { char str[80], ch; char *location; puts("Anna merkkijono: "); gets(str); puts("Anna haettava merkki: "); ch = getchar(); location = strchr(str, ch); if (location == NULL) puts("\nMerkkia ei ole puskurissa"); else printf("\nMerkkijono on kohdassa: %s", location); getch(); return 0; }
strcmp( ) FUNKTIO
Kahden merkkijonon vertailuun käytetään funktiota strcmp(). C-kielessä ei voi käyttää operaattoreita merkkijonojen vertailuun on tätä toimenpidettä varten oma sisäänrakennettu funktio.Funktion strcmp() määrittely:
Funktio ottaa kaksi parametria, kaksi vertailtavaa merkkijonoa. Parametreja edustavat koodissa tunnisteet *s1 ja *s2. Funktio palauttaa arvon tosi, jos merkkijonot ovat yhtäläiset, muutoin arvo on epätosiint strcmp(const char *s1, const char *s2);
Kyseinen koodi palauttaa arvon tosi. Funktio tunnistaa ja erottelee isot ja pienet kirjaimet. Mikäli funktiolle välitetään kaksi merkkijonoa joista toinen on isoilla ja toinen pienillä kirjaimilla, funktio palauttaa arvon epätosi, vaikka merkkijonot olisivat muutoin samanlaiset.strcmp(”p”, ”p”);
strcat( ) FUNKTIO
Funktiota käytetään yhdistämään kaksi merkkijonoa. Funktiolle välitetään parametrina kaksi merkkijonoa. Funktio lisää toisen merkkijonon ensimmäiseen ja päättää tuloksena olevan merkkijonon NULL-merkkiin.Funktion strcat() määrittely:
Tunniste *src on osoitin ensimmäiseen merkkijonoon ja *test osoitin kohdemerkkijonoon. Funktio palauttaa osoittimen yhdistettyyn merkkijonoon.char *strcat(char *test, const char *src);
Esim.char destination[25]; char *space = ” ”, *one = ”One”, *two = ”Two”; strcpy = (destination, two); strcpy = (destination, space); strcpy = (destination, one); printf(”%s\n”,destination);
/*Merkkijonojen yhdistäminen*/ #include <stdio.h> #include <string.h> int main() { char etunimi[50]; char toinen_etunimi[15]; char sukunimi[15]; puts("Kirjoita etunimesi: "); gets(etunimi); puts("Anna toinen etunimi: "); gets(toinen_etunimi); puts("Kirjoita sukunimesi"); gets(sukunimi); strcat(etunimi, " "); strcat(etunimi, toinen_etunimi); strcat(etunimi, " "); strcat(etunimi, sukunimi); printf("\nHei, %s\n", etunimi); getch(); return 0; }
strcpy( ) FUNKTIO
Yhden merkkijonon kopioimiseen toiseen merkkijonoon käytetään funktiota strcpy(). Funktio käyttää kahta parametria ja kopioi toisen merkkijonon ensimmäiseen merkkijonoon. Merkkijonon päättävä NULL-merkki kopioidaan myös toisesta merkkijonosta ja ensimmäisestä merkkijonosta tulee täydellinen toisen merkkijonon kopio..Funktion strcpy() määrittely:
Tunniste *src on osoitin lähdemerkkijonoon ja *test taas osoitin kohdemerkkijonoon. Funktio palauttaa osoittimen kopioituun merkkijonoon.char *strcpy(char *test, const char *src);
Kääntäjistä löytyy vielä muita funktioita merkkijonojen muokkaamiseen kuten kirjainten muuttaminen isoiksi tai pieniksi kirjaimiksi, merkkijonojen kääntäminen ym. Nämä funktiot löytyvät kääntäjän manuaaleista.char str1[60] = ”Kopioitava merkkijono”; char str2[60]; strcpy(str2, str1); printf(”%s”, str1);