Lungimea șir - funcția strlen ()

Lungimea șir - funcția strlen ()

În capitolul precedent, am folosit aproape fără sizeof operație explicație. care ne dă dimensiunea obiectelor în bytes strlen () Funcția vă permite să definiți lungimea numărului șir de caractere. În ceea ce privește plasarea un caracter în memorie este alocat un octet, s-ar presupune că, ca urmare a uneia dintre aceste două operații la o singură linie va obține același rezultat. Se pare că nu este. Să schimbăm programul nostru anterior (adăugați câteva rânduri să-l), iar apoi vom înțelege ce este.







SLAVĂ #define „Wow, ce un nume mare!“

printf ( "Care este numele tau?");

printf ( "Bună,% s% s" numele, LAUDA.);

printf ( „Numele tau este format din litere. și acoperă. amintiri.“

strlen (nume), numele sizeof);

printf ( "Laudati fraza este format din literele.", strlen (PRAISE));

printf ( "și ocupă celulele de memorie ..", LAUDA sizeof);

Rețineți că accidentul am folosit două metode pentru printf () de manipulare a operatorilor lungi. În primul caz scriem un operator de presă în cele două linii de program. Am făcut-o pentru că este permis să rupă șirul dintre argumentele, dar nu și în mijlocul liniei. Într-un alt caz, am folosit două printf () declarație pentru a imprima o singură linie; am subliniat caracterul „linie nouă“ (), doar doua dintre ele. Prezentate mai jos este rezultatul muncii acestui program va ajuta să înțelegeți această situație:







Bună, Perks. Wow, ce un nume mare!

Numele tău are 5 litere și durează 50 de locații de memorie.

Expresie elogioasă este format din 35 de litere și are 36 de locații de memorie.

Să vedem ce e în neregulă. Numele Array este un 50 de locații de memorie, și este raportată de către operatorul sizeof. Dar să dețină numele infatuat necesară numai primele cinci sloturi, și doar despre acest lucru vom informa functia strlen (). În a șasea celula a numelui matrice conține un simbol nul, iar aspectul său este semnalul pentru functia strlen () opri numărul de caractere

Lungimea șir - funcția strlen ()

Figura 4.4. Funcția de detectare a strlen () newline

În trecerea la prelucrarea Laudele constantă a constatat că funcția strlen () din nou, ne dă numărul exact de caractere (inclusiv spații și semne de punctuație) într-un rând. rezultatul operației sizeof este una mai mare, pentru că este luată în considerare și simbolul nul „invizibil“, plasat în capătul liniei. Nu ne-am spus compilatorul de memorie cât de mult ar trebui să ia pentru a se adapta întreaga expresie, el contorizează numărul de caractere între ghilimele.

O altă notă în capitolul anterior a fost utilizat acoladă operația sizeof, și, în acest - fără ele. Nu acolade, utilizați soluția sau nu depinde de ceea ce vrei să știi cantitatea de memorie rezervată pentru elementele de un anumit tip, sau cantitatea de memorie utilizată de anumite obiecte, în primul caz, v-ar scrie sizeof (char) sau sizeof (float). iar în al doilea - numele sizeof sau sizeof 6.28.

Ponderea pe pagina