Strengpeker i C

Strengpeker i C
En streng er ikke annet enn et tegngruppe som inneholder alle karaktertyper av datatypeverdier. Gjennom streng kan vi få tilgang til ethvert tegn med indeksen Nei. på en veldig rask måte. I dag er emnet vårt at vi kan få tilgang til streng gjennom en peker. Det kalles en strengpeker. Vi vil forklare hvordan pekeren vil hjelpe oss med å få tilgang til all indeksen for en streng.

Få tilgang til streng gjennom pekeren

Char Pointer:

  • Strengen lagres i en char -matrise.
  • Char s [10] = ”datamaskin”,
  • Char peker kan peke på charblokk.
  • Char *p; p = & s [0], p+1 = 1001, det representerer adressen til neste blokk.

*(P+I) = S []

Forklaring

I diagrammet ovenfor, la oss anta at vi tegner en peker som er et tegn i type og erklærer en streng hvis baseadresse er 1001. Så adressen til neste blokk er 1002. Fordi hver karaktertypeverdi inneholder 1 byte i minnet, hvis grunnadressen til 1st Blokk er 1001, så den neste blokkens adresse må være 1002 og så videre. Nå holder pekeren P adressen til 1st Blokk betyr basisadressen til den aktuelle strengen. Det betyr at verdien til en peker er 1001. Gjennom denne baseadressen kan vi enkelt få tilgang til alle elementene i strengen.

Streng konstant

  • Streng bokstavelig = streng konstant // streng
  • Printf (“datamaskin”); [som vi skriver i ““ Det kalles strengkonstant eller bokstavelig eller streng]
  • Char s [10] = “datamaskin”;
  • Printf (er); Bare skriv S betyr at det representerer adressen til den første blokken av matrisen S []. Det betyr at vi passerer 1000 som en adresse til den første blokken av matriser [].
  • Strlen (er); Vi passerer adressen til den første blokken av Array S [].
  • Strlen (& s [0]) = strlen (s) = strlen (“datamaskin”);

Eksempel 1

I dette eksemplet kan vi se gjennom pekeren at vi kan beregne den totale lengden på strengen.

#inkludere
int lengde (char *p)

int count = 0;
mens ( *P != '\ 0')

telle ++;
P ++;

returantall;

int main ()

char str [100]; // erklære en streng.
int l;
printf ("\ n Enter hvilken som helst streng:");
får (str);
L = lengde (str); // lengden på strengen.
printf ("\ n lengden på den gitte strengen: %d \ n", l);
retur 0;

Produksjon

Forklaring

Her definerer vi et funksjonsnavn lengde (). I denne funksjonen bruker vi en stundsløyfe der det gis en tilstand at sløyfen ikke blir avsluttet før pekeren *s kan få tilgang til alle elementene i strengen. I Main () -funksjonen erklærer vi en streng som heter Str [] for å ta en streng fra brukeren. Nå passerer vi strengen inne i parentesen til lengden () -funksjonen for å beregne lengden på strengen.

Eksempel-2

Her vil vi se gjennom pekeren vi kan snu en streng.

#inkludere
void revers (char [], int, int);
int main ()

char str [100], temp; // erklære en streng.
Int I, J, Len;
printf ("\ n Vennligst skriv inn hvilken som helst streng:");
får (str);
len = strlen (str);
omvendt (str, 0, len - 1); // reversere strengen.
printf ("\ n streng etter reversering = %s \ n", str);
retur 0;

void revers (char str [], int i, int len)

char temp;
temp = str [i];
Str [i] = str [len - i];
Str [len - i] = temp;
if (i == len/2)

komme tilbake ;

omvendt (str, i + 1, len);

Produksjon

Forklaring

Her inne i hovedfunksjonen () erklærer vi en streng som heter Str [] og tar en streng fra brukeren ved hjelp av get () -funksjonen, bortsett fra at vi definerer en funksjon som heter omvendt () For å snu strengen gjennom en peker som kan få tilgang til verdiene til STR [].

Eksempel-3

Her vil vi se gjennom pekeren vi kan kopiere en streng.

#inkludere
/ * Funksjonsprototype */
void copy (char s2 [30], char s1 [30]);
/* Hovedfunksjon */
int main ()

Char S1 [30], S2 [30];
int jeg;
printf ("Enter String: \ n");
får (S1);
kopi (S2, S1);
printf ("kopiert streng er: %s \ n", s2);
retur 0;

/* Funksjonsdefinisjon*/
void copy (char s2 [30], char s1 [30])

int jeg;
for (i = 0; s1 [i] != '\ 0'; i ++)

s2 [i] = s1 [i];

s2 [i] = '\ 0';

Produksjon

Forklaring

Her inne i hovedfunksjonen () erklærer vi to strenger som heter S1 [] og S2 [] og tar en streng fra brukeren ved hjelp av get () -funksjonen i strengen S1 []. Bortsett fra at vi definerer en funksjon som heter kopi () For å kopiere strengen til S1 [] til String S2 [] gjennom en peker som kan få tilgang til verdiene til streng S1 [].

Eksempel-4

Her vil vi se gjennom pekeren at vi kan sammenligne en streng med en annen streng.

#inkludere
// funksjon som sammenligner de to strengene
ugyldig sammenligning (char* x, char* y)

int flagg = 0;
// itererer en sløyfe til slutten
// av begge strengene
mens (*x != '\ 0' || *y != '\ 0')
if ( *x == *y)
x ++;
y ++;

// Hvis to tegn ikke er samme
// Skriv ut forskjellen og avkjørselen
ellers hvis (( *x == '\ 0' && *y != '\ 0')
|| (*x != '\ 0' && *y == '\ 0')
|| *x != *y)
flagg = 1;
printf ("ulik strenger \ n");
gå i stykker ;


// Hvis to strenger er nøyaktig samme
if (flagg == 0)
printf ("like strenger \ n");


// driverkode
int main ()

// Gitt strenger S1 og S2
char s1 [20] = "python";
char s2 [20] = "DSA";
// funksjonsanrop
Sammenligningsmidler (S1, S2);
retur 0;

Produksjon

Forklaring

Her i hovedfunksjonen () erklærer vi to strenger som heter S1 [] og S2 []. I S1 [] tildeler vi en verdi som heter “Python ” og i S2 [] navngitt “DSA. “ Bortsett fra at vi definerer en funksjon som heter Sammenlign () For å sammenligne strengen til S1 [] og strengen av S2 [] gjennom pekeren som kan få tilgang til verdiene til streng S1 [] og streng S2 [] for å sammenligne begge strengene med hverandre. Ettersom to strenger er forskjellige her, så er utgangen fra strengen en ulik streng.

Konklusjon

I dette emnet dekket vi alle aspektene ved strengpekeren veldig alvorlig for å forstå konseptet med strengpeker. Det er veldig forståelig at vi gjennom en peker enkelt kan få tilgang til hele indeksen til strengen veldig rask og enkel å gjøre koden robust.