Hallo, en welkom terug.
Ik wil onze discussie voortzetten op enkele van de functies in
de standaard c-bibliotheek.
Dit zijn veel van de functies we gingen er al doorheen in de klas, maar
ik wilde je eraan herinneren.
Er zijn dus veel belangrijke verschillende functies uit de
c standaardbibliotheek die we al hebben behandeld tijdens de cursus met
al onze voorbeelden en al de dingen die we hebben geleerd.
We hebben veel gepraat over tekenreeks functies.
En sommige zijn heel gemakkelijk te gebruiken en sommige zullen we veel gaan gebruiken,
dus je zou ermee bekend moeten zijn.
Om een van deze functies te gebruiken, u moet de string van
het headerbestand opnemen. h, alles wordt gedefinieerd in string. H.
We hadden het over str cat.
Str kat voegt twee samen strings, twee parameters die
nodig zijn, twee karakteraanwijzers.
En het zal een karakter teruggeven aanwijzer aaneengeschakeld naar de andere.
Dus een null-teken plaatsen het einde van de laatste tekenreeks,
retourneert de functie s1.
Str char waarnaar wordt gezocht a tekenreeks die een teken bevat.
Dit zal terugkeren a karakterster ook.
Het is een goede manier om te zoeken.
We hebben het hier nogal over gehad een beetje met touwtje kat.
Str vergelijken gaat om twee strings te vergelijken.
Dit is de standaard manier waarop je het doet.
Er zijn twee aanwijzingen nodig en het geeft een geheel getal terug.
We hadden hier wel enkele voorbeelden van waar in principe als je nul
retourneert, de twee strings gelijk zijn.
Als we meer dan of minder retourneren dan,
als je groter wordt dan nul, betekent dit dat s1 meestal . is groter in alfabetische grootte.
Dus als je een string doorgeeft dat a bevat en dan is de tweede string
b, dan zou deze groter zijn dan nul omdat het anders kleiner zou worden dan nul omdat a
kleiner is dan b.
Als je als eerste in b bent geslaagd parameter en c is de
tweede parameter, een soort string beginnend met b of c, wordt
groter dan nul geretourneerd.
Dus je moet begrijpen die retourwaarden.
Dat is wat belangrijk is om te vergelijken.
Str kopiëren.
Zo kun je toewijzen een string naar een andere string.
Onthoud, strings, pointers en tekenreeksen, u kunt de
tekenreeks niet rechtstreeks toewijzen met behulp van de toewijzingsoperator.
Voor gehele getallen en floats kunt u: gebruik gewoon de equals-operators.
Dat kan niet met snaren.
Dus je moet str copy gebruiken als je een tekenreeks wilt toewijzen aan een
aanwijzer, tekenaanwijzer of tekenreeks.
U kunt een teken initialiseren array letterlijke tekenreeks constante binnen
dubbele aanhalingstekens.
Maar daarna, na de initialisatie als u
het wilt wijzigen, moet u str copy gebruiken.
Str lengte.
Een andere belangrijke functie om de lengte van een string krijgen.
Dit retourneert een maat t die de . is geheel getal dat de lengte vertegenwoordigt.
Al deze tekenreeksfuncties neem aanwijzers of tekenreeksen
in als parameters.
Dus we moeten begrijpen hoe dat ook werkt.
Andere tekenreeksfunctie strncat.
Onthoud alle functies die in plaats daarvan het einde toevoegen, zijn een
beetje veiliger omdat je geen buffer overflows hebben.
Dus in strncat de derde parameter wordt toegevoegd en dit betekent dat u zoveel
parameters kopieert of samenvoegt.
Meestal is de derde parameter wordt de grootte van de eerste
parameter omdat je dat niet wilt om iets groters dan dat te kopiëren.
Deze functies moeten gebruikt
over de andere tekenreeksfuncties omdat ze: veilig voor bufferoverloop.
Stren vergelijken.
Nogmaals, je gaat zeker vergelijken aantal tekens voor s1 en s2.
Strn kopiëren, hier de derde parameter end zou waarschijnlijk de str-lengte van of
de grootte van s1 zijn.
Omdat je s2 gaat kopiëren en s1, maar u wilt niet meer
bytes kopiëren dan s1 kan bevatten of opslaan.
Str char.
Hier kun je zoeken de tekenreeks voor het laatste voorkomen van
een teken.
Dus je merkt dat dit er erg uitziet bekend of vergelijkbaar met de str char, er
is hier een extra r.
Dus in plaats van de eerste terug te sturen gebeurtenis, dit
zal de laatste keer voorkomen, maar je gebruikte dezelfde manier als de andere.
str str.
Dit gaat zoeken naar een string.
Dit is dus een zoekfunctie waarbij: je probeert in wezen een
substring in een string te vinden.
Nogmaals, het nemen van twee karakteraanwijzingen.
strijk.
Dit was de belangrijke functie waar: u kunt het helpen bij het ontleden van gegevens.
Strtok neemt het scheidingsteken als de tweede parameter en
het zal zoeken naar dat scheidingsteken ergens in de string.
Zo vaak gebruik je zoiets als een spatie of een regelinvoer voor s2.
Het zal de string breken in: een aantal verschillende tokens.
Nogmaals, gebruik wanneer je wilt om gegevens gewoonlijk te ontleden.
Elke keer dat je strtok . moet bellen meerdere keren totdat je met
null bent als je nog steeds bent op zoek naar de volgende tok die u in een
bepaalde string wilt vinden.
We hadden ook een aantal belangrijke karakter functies.
Alle karakterfuncties zijn gedefinieerd in ctype. H.
De karakterfuncties die we gebruikt waar de is-functies controleren of een teken al dan
niet is een alfanumeriek of dat het blanco is of dat
het een besturingselement is teken een cijfer, er waren daar
een aantal verschillende functies.
Dus onthoud dat ctype. h staat toe ons om voor deze verschillende karakters
te controleren wat ze werkelijk zijn.
We hadden ook enkele conversiefuncties in ctype. h, voornamelijk onze twee bovenste.
Twee lager heeft een karakter en het zal het equivalent
in kleine letters van die c geven.
Weet je nog dat we een uitdaging hadden waarbij we hebben kleine letters omgezet in hoofdletters.
In die uitdaging hebben we eigenlijk toegevoegd naar onze ASCII-tabel, maar we hadden
twee bovenste van het personage kunnen noemen.
We hadden er twee kunnen opzetten rond de
karakter zolang we ctype. h en dat zou omgezet worden een kleine letter naar een hoofdletter.
We hadden veel IO functies, invoer en uitvoer.
We concentreerden ons op lezen en het schrijven van bestanden, maar
we lezen ook invoer van het toetsenbord, en we hebben uitgevoerd gegevens naar de console of het scherm.
Dus om de meest voorkomende IO te gebruiken functies, dat zit allemaal in
de standaardio. h header-bestand.
Dit bestand bevat declaraties voor de verschillende IO-functies
en definities voor constanten, zoals einde van bestand, null standaard in
standaarduitvoer en standaardfout.
Dat zijn allemaal constante waarden.
Er is ook een constante voor het bestandsstructuurbestand.
Fclose is een functie die we gebruikt om onze streams af te sluiten.
Het sluit het bestand geïdentificeerd door bestandsaanwijzer.
En het geeft nul terug als het moet sluit een succesvolle, anders eof.
Feof, dat is een functie die we niet hebben expliciet gebruiken, maar dat zal controleren of je aan het einde
bent of niet van het bestand in plaats van te vergelijken met een
constante, kunt u een feof doen.
Doorspoelen.
Dit is een functie die zal spoelen alle gegevens van de interne buffer.
Soms moet je dit doen wanneer je opnieuw wilt beginnen, maar je komt
er eigenlijk gewoon vanaf van alles in een buffer.
We hebben ook fgetc.
Dit is individueel lezen tekens, neemt een bestandsaanwijzer.
We hebben een positie.
Dit is een van de positie functies.
Het krijgt de huidige bestandspositie voor het bestand dat
is gekoppeld aan de bestandsaanwijzer en slaat het op in een f-positietype, dat is gedefinieerd
in standaard io. h ook.
We hadden onze fgets.
Dit was lezen in strings.
Heel mooi, het leest karakters uit het aangegeven bestand, maar
het aantal tekens.
Fopen zal een bestand openen in a specifieke modus: lezen, schrijven of
toevoegen met behulp van een bestandsaanwijzer.
Fprintf zal gegevens schrijven en formatteren uitvoer, en het is vergelijkbaar met de printf-functie, het
zal de argumenten opgegeven door de aanwijzer en gebruik vervolgens
geformatteerde gegevens om te schrijven.
Dus je kunt gehele getallen schrijven, verdubbelen met behulp van formaatspecificaties en vervolgens variabelen
die u wilt schrijven.
We hadden ook fputc, wat zal schrijf tekens naar een bestand.
Fputs zal een string naar een bestand schrijven.
Er is een buffer en een bestand voor nodig aanwijzer wat u wilt schrijven
en het bestand waarnaar u wilt schrijven.
Fscanf leest gegevens uit een bestand.
Het zal de invoer pakken, en het zal hetzelfde soort formaat
gebruiken als scanf zal gebruiken formaatspecificaties en variabelen.
Maar dit is leuk dat je wilt lees gegevens in, gescheiden door spatie.
U kunt fscanf gebruiken en u kunt specificeren het type dus lees
het direct in ints, doubles, specifieke datatypes.
Fseek gaat de positie verplaatsen van waar u naar verwijst in een bestand.
Je hoeft dus niet te beginnen bij de begin of einde van een bestand.
U kunt direct naar het midden van het bestand.
Zodra u die positie zoekt, is uw next read of write zal die positie gebruiken om
naar te schrijven of naar te lezen.
Fset-positie is vergelijkbaar met fseek.
Het stelt de huidige bestandspositie in
in het bestand dat is gekoppeld aan de bestandsaanwijzer naar de waarde aangeduid door f-positie, fpos.
We hadden ook ftell.
Ftell zal terugkeren hoe vele bytes vanaf het begin
bent u gebaseerd op de bestandsaanwijzer.
Dus het is de relatieve offsite in bytes vanaf de huidige positie,
niet altijd het begin, maar de huidige positie.
We gebruiken de ftell in een van onze uitdagingen om een bestand in omgekeerde volgorde te lezen.
Afdruk.
We gebruiken dit waarschijnlijk meer dan enige andere functie.
Dit werd weergegeven uitvoer naar het scherm.
Het gebruikt formaatspecificaties en een variabel aantal
argumenten gescheiden door komma's.
Printf is erg handig voor het debuggen en het weergeven van uitvoer, wat
je nogal wat doet in een c-programma.
Verwijderen.
Verwijderen is een functie waarbij: u kunt een bestand verwijderen.
Er is een bestandsnaam voor nodig.
De bestandsaanwijzer moet worden gesloten.
Je kunt het niet open hebben.
Hernoemen zal een bestand hernoemen naar het andere bestand moet ook worden gesloten het
bestand kan niet worden geopend.
Scanf leest invoer van meestal standaard vanaf het toetsenbord.
U kunt het wijzigen om invoer te lezen van andere streams als je wilt.
We hadden ook conversiefuncties die: hebben we tijdens de cursus besproken.
De meeste van deze functies bevinden zich in de standaard lib. h-bestand, header-bestand.
We hadden de atof-functie.
Dit is het converteren van een string naar a zweven, en je geeft het door in een string.
We hebben functies atoi.
Dit omzetten van a tekenreeks naar een geheel getal.
Atol converteert een string naar a lang, en je geeft de string door
en het retourneert ofwel de return methode waarnaar u converteert.
Deze zijn erg handig.
Deze gebruik je vaak om te converteren tekenreeksen naar een soort nummertype.
Atoll converteert het naar een lange lange int.
Maar zorg ervoor dat je kijkt naar de standaard
lib-headerbestand voor meer conversiefuncties.
We hadden onze geheugenfuncties, onze dynamische geheugentoewijzingsfuncties.
Deze zijn echt belangrijk.
Dynamische geheugentoewijzing is belangrijk omdat het veel efficiënter is.
U gebruikt alleen de geheugen dat je nodig hebt.
U maakt geen statische gegevens.
Het staat uw programma toe veel flexibeler te zijn.
Al deze functies zijn: opgenomen in standaard lib. H.
We hadden het over calloc.
Calloc is een geweldige functie waarbij: je kunt een bepaalde grootte toekennen
en die wordt vermenigvuldigd met n.
U kunt dus het gegevenstype opgeven ook en het zal het vermenigvuldigen.
Het leuke van calloc, het initialiseert uw gegevens.
Dus het heeft echt de voorkeur boven malloc.
We hebben onze gratis functie die het geheugen zal wissen.
Al dit geheugen gaat op de stapel te creëren.
Dus we zullen veel in de buurt zijn langer, maar het is aan jou als
programmeur om dit geheugen te beheren.
Je wilt altijd je geheugen nadat u klaar bent met
gebruiken, want geheugen is schaars bron in andere programma's en we willen dat
geheugen gebruiken.
Bel dus altijd gratis na je doet een calloc of malloc.
Malloc is een eenvoudiger versie van het creëren van geheugen.
Het doet er eigenlijk niet toe initialiseer alle gegevens.
Het neemt alleen de grootte als parameter.
Het geeft een lege ster terug.
Dus je moet het altijd casten net als bij calloc naar welk
type geheugen je ook verwijst.
Als je naar int of . wijst drijven, die moet je werpen.
We hebben ook realloc.
Realloc is geweldig omdat het kan daadwerkelijk toevoegen aan het bestaande geheugen.
En dus op deze manier jouw geheugen kan dynamisch zijn.
Je kunt het groter maken als u meer gegevens wilt opslaan.
Realloc neemt een wijzer in de grootte.
Het gaat alle gegevens bewaren die waar de vorige herinnering naar wees.
Het zal nieuw geheugen toewijzen maar het zal het behouden, dus je kunt
iets toevoegen aan een bestaand geheugen.
Heel, heel handig.
Bij het dynamisch creëren van geheugen is zal echt nuttig zijn in al je programma's,
vooral omdat pointers zijn heel erg belangrijk, ze
zijn veel efficiënter.
Maar zorg ervoor dat je alles begrijpt deze header-bestanden die we in de loop
van de cursus gebruiken.
Dit zijn de belangrijkste die zijn heel, heel belangrijk.
We zullen praten over een aantal nieuwe in de volgende paar lezingen die we niet
zoveel konden bespreken als ik wilde.
Maar dit zijn enkele ook belangrijke.
Dank u.