Lungimea șirului este funcția strlen ()
În capitolul anterior, am folosit dimensiunea operațiunii cu puțin sau deloc explicație. care ne dă dimensiunea obiectelor în octeți Funcția strlen () ne permite să determinăm lungimea unui șir după numărul 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 așa. Să schimbați puțin programul nostru anterior (adăugați câteva linii la el) și apoi vom înțelege ce este greșit.
#define PRAISE "Asta e, ce nume grozav!"
printf ("Care este numele dvs.?");
printf ("Bună ziua,% s.% sn", PRAISE);
printf ("Numele dvs. constă din" litere și preluate "celule de memorie." n ",
strlen (nume), dimensiune nume);
printf ("Fraza de laudă constă din., litere", strlen (PRAISE));
printf ("și primește celule de memorie n", sizeof PRAISE);
Rețineți că am folosit în mod accidental două metode pentru a procesa declarațiile lungi de tip printf (). În primul caz, scriem o declarație de imprimare în două rânduri ale programului. Am făcut acest lucru pentru că este permis să rupă o linie între argumente, dar nu în mijlocul liniei. În celălalt caz, doi operatori printf () au fost utilizați pentru a imprima o linie; am specificat caracterul "linie nouă" (n) numai în al doilea. Rezultatul lucrării din acest program prezentat mai jos va ajuta la înțelegerea acestei situații:
Bună, Perks. Da, ce nume mare!
Numele dvs. este format din 5 litere și ocupă 50 de celule de memorie.
Fraza de laudă constă din 35 de litere și ocupă 36 de celule de memorie.
Să vedem ce se întâmplă. Numele matricei ia 50 de celule de memorie și exact acest lucru raportează dimensiunea operației. Dar pentru stocarea numelui Perks sunt necesare doar primele cinci celule și funcția strlen () ne informează doar. A șasea celulă a numelui matricei conține un caracter nul și aspectul său servește ca un semnal pentru funcția strlen () pentru a opri numărarea caracterelor
Figura 4.4. Recunoașterea prin funcția strlen () la sfârșitul liniei
Î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 a doua dimensiune a numelui sau dimensiunii de 6.28.