Esitlus üles laadida
Esitlus laaditakse üles. Palun oodake
1
Tekstitöötlus Sõne, string
2
Tekstitöötlusest Meenutuseks: Sõne/tekst/string on tähemärkidest koosnev massiiv Sõned on jutumärkide vahel, tähemärgid on ülakomade vahel Teksti lõppu tähistab erisümbol '\0’ (null-terminated) char w[] = "Mannavaht" char w[12] = "Mannavaht" Iga täht on tegelikult number vastavalt ASCII tabelile 'A' – 65, 'B' – 66, 'C' – 67 'a' – 97, 'b' – 98, 'c' – 99 '0' – 48, '1' – 49, '2' – 50 '\t' – 9, '\n' – 10 M a n v h t \0 M a n v h t \0 2019 Risto Heinsar
3
Tühikutes üle lugemine
char arr[10]; Loome tähemärgimassiivi pikkusega 10 (9 + 1) tähemärki scanf("%s", arr); Loeb tühiku või reavahetuseni, lubab buffer overflow rünnakuid gets(arr); Loeb klaviatuurilt reavahetuseni, ei soovitata kasutada, buffer overflow rünnakud fgets(arr, 10, stdin); Loeb failist (stdin – sisendvoog klaviatuurilt), reavahetus salvestatakse samuti tekstimassiivi! scanf("%9s", arr); Loeb tühiku, reavahetuse või 9 tähemärgini scanf("%[^\n]%*c", arr); Loeb kuni reavahetuseni. Taaskord võimalik buffer overflow rünnak! getchar() ja fgetc() Loeb ühe tähemärgi, kasutatakse tsüklis, keerukas aga praktiline 2019 Risto Heinsar
4
Sõnede manipuleerimine
Me saame võrrelda ja omistada tähemärke word[0] == 'a'; word[0] = 'a'; Me ei saa seda teha samamoodi sõnedega word = "Mannavaht"; word == "Mannavaht"; Sõnedega lihtsamalt toimetamiseks kasutame <string.h> teeki 2019 Risto Heinsar
5
strlen() – string length
Teksti pikkuse leidmine strlen(str); str – tekst, mille pikkust leida. Lõputähist '\0' ei arvestata (loendata). Funktsioon tagastab teksti pikkuse täisarvuna. >>> Kirjuta koodilõik, kus kasutajalt küsitakse lause ja programm ütleb selle pikkuse. 2019 Risto Heinsar
6
strstr() – substring, string in string
Leiab, kas ühes sõnes esineb teine sõne (alamsõne, „võtme“ otsimine) strstr(str1, str2); str1 – sõne, kust otsitakse str2 – otsitav sõne, võti Tagastatakse NULL, kui vastavust ei leitud. Tagastatakse (mittenulline) väärtus, kui otsitav sõne leiti. Väärtuseks on esimese kattuva tähemärgi asukoht (mäluaadressina) >>> Täienda programmi, et kasutaja saaks otsida sõna eelnevalt sisestatud lausest. Piisab vastusest eksisteerib / ei eksisteeri (konstruktsioon if (strstr()) 2019 Risto Heinsar
7
strcmp() – string compare
Võrdleb kahte sõnet. Võrreldakse tähemärk-haaval alates esimesest. Võrreldakse, kuniks jõutakse lõpuni või leitakse erinevus. strcmp(str1, str2); str1 ja str2 on võrreldavad sõned. Tagastatakse 0, kui sõned on võrdsed Tagastatakse negatiivne täisarv, kui str2[i] täht on str1[i] tähest suurema väärtusega Tagastatakse positiivne täisarv, kui str2[i] täht on str1[i] tähest väiksema väärtusega >>> Muuda olemasolevat koodilõiku nii, et seda ei käivitataks enne, kui kasutaja on öelnud sobiliku parooli 2019 Risto Heinsar
8
strcat() – string concatenate
Kleebib ühes sõnes sisalduva teisele otsa. Algne sõne säilitatakse. Kleepimist alustatakse sihtkoha lõpusümbolist ('\0'), mis asendatakse kleebitava esimese tähemärgiga. Sihtkohta (destination) suurus peab olema piisav, et kleebitud tulemust hoida Nt kui sõnede pikkused on 4 ja 6, siis sihtkoha pikkus peab olema 11! strcat(destination, source); destination – sihtkoht, sõne mille lõppu kleepima hakatakse source – sõne, mida kleebitakse 2019 Risto Heinsar
9
strcpy() – string copy Allikast (source) kopeeritakse sõne sihtkohta (destination). Andmed kirjutatakse üle – olemasolev sisu hävineb. Sihtkoha (destination) pikkus peab olema piisav, et kopeeritud tulemust hoida strcpy(destination, source); destination – sõne, mille asukohta tulemus kopeeritakse source – sõne, mis kopeeritakse 2019 Risto Heinsar
10
strcpy() ja strcat() Loo funktsioon, mis võtab sisse kaks sõna
Funktsiooni sees koostatakse uude tähemärgimassiivi lause, mis sisaldab neid kahte sõna. Kusjuures üks edastatavatest sõnadest peab olema lauses esimene. Väljasta koostatud lause nt: KombineeriTekst("koer", "kuri"); Funktsioonis kombineerimise tulemusena väljastatakse: "Koer on kuri." >>> Kõik see kokku ühes koodifailis? See oli tunnitöö #1 2019 Risto Heinsar
11
Tunnitöö lõpptulemus Programmi käivitades nõutakse kasutajalt parooli. Enne õige parooli sisestamist ei tohi programm edasi minna. Kasutaja sisestab lause, kuvatakse mitu tähemärki see sisaldas Kasutajalt küsitakse otsisõna/fraas ning väljastatakse, kas see sisaldus eelnevalt loetud lauses. Kasutajalt küsitakse kaks sõna, mis edastatakse funktsiooni. Uude tähemärgimassiivi moodustatakse lause ja väljastatakse see. Loo veel üks funktsioon lisaks eelmainitule. See võib olla kas kasutaja autentimiseks või otsingu teostamiseks. 2019 Risto Heinsar
12
Edasijõudnute Otsing ei tohi olla tõstutundlik, st aabits, Aabits, AABITS on sama sõna Lause pikkuses loetakse kokku tähtede arv ilma kirjavahemärkide ja tühikuteta, st a-z, A-Z Ära kasuta string.h teeki, kirjuta kõik vajalikud funktsioonid ise Mitme kasutaja autentimissüsteem koos personaalsete tervitustekstidega, nt „alev_strom“, „surstromming“, „Rootsi kunn tuli“ 2019 Risto Heinsar
Seotud esitlused
© 2024 SlidePlayer.ee Inc.
All rights reserved.