Bine și bun venit în această prelegere vreau să vorbesc despre crearea unui șir special cum poți să
o faci în C folosind o matrice de caractere.
Tind să folosesc termenii de șir și caractere de caractere interschimbabil, dar într-adevăr un șir de caractere este
matricea despre care vom vorbi.
Este un concept foarte important.
Acum vom putea folosi cuvinte în text în programul nostru pentru a face tot felul de lucruri.
Acum C nu are niciun tip de date care reprezintă un șir.
Nu este nimic acolo.
Multe limbi suportă fie un obiect, fie un tip de date de tip șir.
Acum, deoarece nu există niciun tip de date C în șir, nu puteți folosi niciunul dintre operatorii de pe șir.
Deci, ceea ce facem în cele din urmă este că vom ajunge să folosim biblioteca standard.
Și există tot felul de funcții de șir despre care vom vorbi despre că avem trei prelegeri
dedicate diferitelor funcții de șir pe care le puteți angaja.
Și acest lucru ne va ajuta să manipulăm șirurile care obțin informații despre șiruri de caractere.
Dar acum puteți utiliza operatorii pe șiruri de caractere.
Nu se plussing sau mânca sau lipsesc șiruri de caractere nimic ca șiruri de caractere în C sunt stocate într-o într-o serie
de tip char.
Știm ce este o matrice.
Știm ce tip de tip char este un singur caracter și un matrice.
Puteți doar să stocați mai multe elemente cu același nume.
Deci, are sens că un șir ar fi în interiorul unui caracter, deoarece un șir este mult mai multe caractere, astfel încât
caracterele sau un șir sunt stocate în celulele de memorie adiacente un caracter Purcell puteți accesa la fel ca și cum ați
accesa acele matrice Ei bine, dar cum ai declarați un șir și vedeți că pur și
simplu ați folosi tipul de caractere și apoi parantezele pentru a indica dimensiunea.
Ca o matrice normală.
Dacă ați fost de a crea o dragoste un alt tip de char și apoi indiferent de
numele dvs. și apoi dimensiunea matricei de caractere în paranteze pătrate este modul în care puteți declara un șir în C ..
Acum, când declarați șirul în C ca acesta, nu
există date reale asociate cu specificarea dimensiunii.
Este cel mai simplu mod.
Deci, variabila poate găzdui un șir care conține până la 19 caractere.
Amintiți-vă acest caracter nul dacă spuneți că dimensiunea șirului va fi de 20, ceea ce înseamnă că numai 19 caractere pot
fi efectiv stocate deoarece trebuie să aveți acel caracter suplimentar pentru nul.
Ține minte asta.
Declarând o matrice de caractere ca 20 înseamnă că 19 caractere pot fi stocate acolo.
Când specificați dimensiunea unui matrice pe care intenționați să o utilizați înainte de șirul de caractere pentru a stoca un șir, acesta trebuie să
fie cel puțin unul mai mare decât numărul de caractere din șirul pe care doriți să îl stocați.
Compilatorul va adăuga automat terminația nulă la sfârșitul fiecărei constante șir, așa că ar trebui să faci este atunci
când creați aceste șiruri de caractere ar trebui să le inițializați.
O.K.
Deci, puteți inițializa o variabilă de șir la fel cum puteți inițializa un matrice.
Puneți fiecare personaj în interiorul acestor paranteze.
Dreapta.
Deci, acest lucru pare foarte asemănător cu dacă ați inițializa elemente dintr-o matrice.
Dar dacă spui cuvântul char și apoi în interiorul parantezelor ciudate pe care le puneți în
fiecare caracter care ar crea o matrice de caractere.
Deci, este la fel ca oricare altă inițializare a matricei.
În absența dimensiunii, C compilatorul C calculează automat numărul elementelor din
matrice și apoi adaugă unul pentru terminatorul nul.
Deci, se bazează pe numărul de inițializatori pe care îl aveți între paranteze.
Aspectul curly această temă va rezerva spațiu în memorie pentru exact șapte personaje.
H. E. L L O.
Punctul de exclamare și apoi terminatorul nul și această diagramă mică din partea dreaptă vă arată că adăugați
automat terminatorul nul.
Acum ar fi un fel de durere, dar dacă întotdeauna ați inițializat caracterele de caractere
cu citate simple urmate de virgule.
Deci, ceea ce puteți face este chiar o notă de stenotă, deoarece puteți pune în jurul valorii de ghilimele duble.
Deci, puteți specifica șirul în mod explicit ca în primul exemplu și atunci ar trebui să utilizați
de fapt o funcție de șir doar pentru a aplica date către el.
Sau puteți lăsa compilatorul să o facă pentru dvs.
Problema cu a face în mod explicit este că trebuie să vă amintiți mereu să
adăugați acel caracter suplimentar pentru nul.
Deci, ce ar trebui să faci este să-l lași pe compilator să-și dea seama pentru tine.
Deci, nu puneți nici un număr în interiorul acestor paranteze pentru mărimea lor, deoarece dacă mărimea specificată este
prea mică, compilatorul nu se poate potrivi caracterului de terminare în partea dreaptă.
Și nu pune unul acolo și nu vă va spune că nu a pus unul acolo.
Deci vei avea un bug în programul tău, nici măcar nu o știi.
Cea mai bună practică este atunci când utilizați un literal șir și inițializați un
șir pentru a lăsa compilatorul să-și imagineze dimensiunea pentru dvs.
Știi ceva de genul a face o dimensiune mai mare sau ceva și apoi pune-l acolo și
ne vom da seama dimensiunea pentru tine.
Deci, nu specificați mărimea lasă compilatorul să-și dea seama.
În acest fel puteți fi sigur că va fi corect.
Doar lăsați acele paranteze drept paranteze goale și le atribuiți operatorului de atribuire și apoi în
interiorul pătratului în interiorul ghilimelelor duble puteți să-l puneți doar că nu aveți nevoie nici măcar de paranteze pătrate, aceasta
este cea mai bună practică va trece printr-un exemplu.
De asemenea, puteți inițializa doar o parte dintr-o serie de elemente de tip char cu un șir astfel încât
dacă ați creat de fapt o dimensiune care a fost într-adevăr mare și ați alocat doar câteva caractere care sunt bine la fel de
bine pentru inițializarea unora dintre personaje toate alte personaje vor fi pur și simplu goale.
Deci, ceea ce se va întâmpla aici este compilatorul va inițializa primele cinci elemente str zero pentru a
amesteca pentru toate acele caractere o constantă string și apoi șirul de cinci vor conține spațiul caracterului
nul este încă de a fi alocate pentru toate cele 40 de
elemente din matrice, dar doar cinci dintre acestea vor fi folosite pentru plus caracterul nil.
Deci, din nou, cea mai bună practică nu specifică de fapt un număr în interiorul dimensiunii, ci îi atribuie un
literal șir.
Și folosim ghilimele duble.
De asta te duci la Nipsy.
Acum, dacă nu ați inițializat și tocmai ați creat matricea de caractere cu o dimensiune Cum puneți datele în
ea.
Ei bine, pentru că e matrice.
Nu puteți atribui corect datele.
Știm că dacă avem o matrice integeră, nu putem doar să atribuim o matrice integeră numărul cinci.
Nu are sens.
Trebuie să specificați elementele reale pe care trebuie să le specificați indicii.
Deci nu poți face ceva de genul a declara o matrice de caractere cu o sută de caractere și apoi să spui că este egală
cu salutul.
Aceasta nu va funcționa deoarece, din nou, așa cum este o matrice, chiar dacă este un șir în interiorul citatelor duble,
este încă o matrice în memorie.
Deci, dacă efectuați o operațiune de atribuire, nu puteți aloca o matrice de caractere de caractere unei alte
serii de caractere, cum ar fi cele de mai sus.
Dacă doriți să atribuiți date unui tablou de caractere după ce l-ați declarat și după ce ați
inițializat că trebuie să utilizați o funcție specială numită str copie.
Și vom vorbi despre asta într-o altă prelegere, până în momentul în care creați șirurile dvs. vor
fi literali de șir.
Vor fi în interiorul citatelor duble și nu le veți modifica niciodată.
Deci, acest lucru este perfect valabil, de asemenea, ați putea accesa de fapt aceste caractere sau fiecare element
din matrice de index și specificați fiecare caracter.
Deci, ca Sub-zero cineva și apoi a pus un singur caracter într-un singur citate ați putea atribui în acest fel, dar imaginați-vă dacă ați avut
un șir care a fost o sută de octeți.
Acest lucru va lua multe linii de cod, astfel încât să nu doriți să
faceți acest lucru ceea ce doriți să faceți este să inițializați-l atunci când îl declarați fără dimensiune și apoi să specificați dacă vreodată vreți să-l
modificați stocați copia până la afișarea unui șir ca ieșire.
Încă o să folosim această funcție Pranav atunci când vrei să te referi la un șir oriunde în verbul
tău din program.
Folosiți doar numele de matrice de la sine.
Nu este necesar să specificați indicii care cauzează indici în interiorul matricei care va specifica un singur caracter.
Dacă doriți întregul șir să folosiți numele matricei.
Deci, dacă utilizați funcția Pernelle pentru a afișa ieșirea, veți face următoarele.
În interiorul citatelor duble ar trebui să utilizați un procent ca și specificatorul de format.
Și apoi numele dreptului de caractere.
Deci, nu o tratați ca și alte rețele atunci când doriți să o accesați atunci când doriți să-l accesați doar
numele.
Nu există indici sau paranteze reale.
Și formularul procentual cere pentru focul autobuzului de masă este pentru a pune un șir terminat null.
Membru înainte de a utiliza procentul D pentru numerele întregi pe care le-am folosit.
Puteți folosi procentul C pentru caracterele pentru șiruri de caractere pe care le utilizați în procente da.
Și acestea sunt matrice de caractere și null terminat.
Se așteaptă ca un șir terminat cu nul, deci inițializați șirul.
Dacă ați făcut-o fără nici o dimensiune și nu a fost adăugat automat Tony sau dacă
l-ați creat cu o anumită dimensiune și l-ați adăugat sau dacă l-ați adăugat în mod explicit Nu contează.
Trebuie doar să fie terminată null funcția printf presupune când Encounter este procentul ca specificator de format
că argumentul corespunzător este un șir de caractere care este transformat de un caracter nul.
Așa m-aș fi așteptat, așa că trebuie să fie o modalitate de a introduce un șir.
Știm cum să introducem alte seturi de date prin tastatură utilizând scanerul.
Dacă vom face același lucru pentru introducerea șirurilor, vom folosi funcția de scanare cu
funcția de scanare.
Va fi același mod, cu excepția faptului că veți utiliza un alt specificator de format.
Deci, pentru șiruri de caractere, veți folosi un procent ca intrare și care este folosit pentru introducerea unui șir.
Alt lucru de observat aici este că nu există ampersand pentru numele variabilei, deoarece este un caracter.
Rețineți că am menționat că trebuie să furnizați ampersand adresa operatorului pe șiruri de caractere.
Motivul este că atunci când vorbim despre pornografie, va fi mai clar.
Dar intrarea Chaar, chiar dacă este un caracter este un pointer și scanează F, deoarece al doilea
argument ia un pointer.
De aceea nu trebuie să faceți acest lucru atunci când declarați întregi și dublează acelea care nu sunt indicii.
Și dacă doriți să citiți datele introduse de la tastatură, nu puteți avea al doilea argument așteaptă
un pointer.
Trebuie să treci acum o adresă cu un scaner.
Când faceți o scanare de șir, f va citi doar până în spațiu.
Deci, dacă faceți scanarea APH și tastați și Jason este un instructor, atunci va fi stocat în intrare este
Jason.
Pentru că odată ce a lovit acel spațiu, nu va citi restul șirului.
Deci, există alte funcții și puteți utiliza pentru a citi întregul șir câteva exemple pe care le vom folosi
pentru a face că puteți face lucruri ca AFCA S, care este un alt mod de a citi input de la tastatură
și care va citi întregul șir indiferent de spații.
Dar există un altul pe care cred că-l numesc Get undercore cerut pentru C 11, dar vom vorbi despre asta mai
mult, dar asta e doar un lucru pe care să-l amintești când citești
o intrare pentru șiruri de caractere, ci doar să citești tot drumul până în spațiu.
Ce-ar fi daca testeaza daca doua siruri de caractere sunt egale.
Ei bine până în acest moment am testat toate variabilele pentru a vedea dacă sunt egale pe care tocmai le folosim egal cu egal.
Corect, dar cu șiruri de caractere, acest lucru nu va funcționa.
Operatorul de egalitate reține că am spus că șirurile sunt caractere, astfel încât să
nu poți folosi operatorii pe ele, iar operatorul de egalitate poate fi aplicat numai la duble sau flotoare sau două caractere.
Nu funcționează asupra structurilor sau a rețelelor.
Nu puteți compara două matrice.
Deci, nu va funcționa cu șiruri de caractere dacă doriți să determinați dacă două șiruri sunt egale.
Trebuie să comparați în mod explicit caracterul caracterelor de două caractere de
caractere, astfel încât ar trebui să vă uitați la fiecare element din indexul matricei prin index.
Cu toate acestea, aceasta este într-adevăr o problemă mare, pentru că ar fi cu adevărat plictisitoare.
Așa că vom vorbi despre modul în care o puteți face foarte ușor folosind o funcție de
comparare a magazinului din biblioteca standard, dar nu puteți folosi egalitatea egală.
Amintiți-vă că și din nou, doar ca un memento am spus de câteva ori vreau să spun din nou.
Consecuția constantă x în interiorul citatelor duble nu este aceeași cu cea a constantei caracterului x în interiorul cotelor
unice x în interiorul simbolului numit este un tip de bază.
Este doar caracterul sau grija x în interiorul citatelor duble este un tip derivat.
Este o matrice de tip char x în interiorul citatelor duble într-adevăr constă din două caractere X în
terminatorul nul pentru caractere nul.
Așa că ține minte.
Iată un exemplu de modul în care putem crea șiruri de caractere fie declarându-le cu o dimensiune, fie inițializându-le pe
aceeași linie.
Acum, aceasta este cea mai bună practică dacă intenționați să utilizați literali de șir.
Ceea ce aș face este să fac ceea ce spune aici, să creeze matricea de caractere.
Nu specificați o dimensiune și apoi în partea dreaptă a operatorului de atribuire aveți ghilimele duble.
Compilatorul creează automat șirul drept și adaugă un terminator nul.
Dacă specificați o dimensiune și atunci nu aveți destule caractere, nu va fi stocată.
În regulă, trebuie doar să creați literali de caractere de caractere creând folosind tipul de date char
numele variabilei și apoi parantezele goale.
Acest program să vedem că acest program este de gând să mă gândesc la caracterele într-un matrice.
Deci a fost, în esență, de a obține lungimea șirului.
Ceea ce facem aici este că noi creăm o variabilă numită Contează în matrice de caractere cu două șiruri diferite care
trebuie să fie sau nu să fie.
Și apoi virgula este întrebarea.
Char str. Unul va avea o alternativă după B și începe tiru va avea o alternativă în cazul în
care întrebarea.
Așa că avem o buclă aici care va trece prin prima matrice de la Conte
egal cu zero până când vom vedea un terminator nul și putem folosi nu egal în acest
caz, deoarece comparăm un caracter drept.
Nici un Terminator nu este un personaj.
Este perfect bine să împerechezi personaje.
Deci, pentru o buclă de timp va merge tot drumul până când vom vedea un terminator nul.
Odată ce vedem un terminator nul, pe care o vom sări, vaca va fi egală cu numărul de caractere din
șirul respectiv.
Deci este lungimea acelui șir.
Noi o facem pentru ambele si vom observa ca, in esenta, ambele siruri de caractere vor avea lungimea corecta pentru
ca tocmai trecem prin fiecare dintre ele sa fie sau nu sa fie vorba de ceva de genul ca 18 personaje au
trebuit sa conteze rapid Îmi pare rău pentru asta.
Acum nu veți mai avea nevoie să faceți așa ceva pentru că avem o funcție de helper
frumos cu lungimea STR pentru a găsi linkuri de șiruri de caractere.
Dar din nou ceea ce demonstrează este faptul că faptul că este o matrice și dacă
doriți să comparați sau să găsiți căutarea lungimii unui șir puteți folosi nu egal în
privirea caracterului terminatorul nul.
Sper că acest lucru a fost de ajutor, așa vom defini o literaliză de inițializare a șirului.
Mulțumesc.