Strängar i C (med exempel)

I den här handledningen lär du dig om strängar i C-programmering. Du lär dig att deklarera dem, initiera dem och använda dem för olika I / O-operationer med hjälp av exempel.

I C-programmering är en sträng en sekvens av tecken som avslutas med ett null-tecken . Till exempel:

 char c() = "c string"; 

När kompilatorn stöter på en sekvens av tecken som är inneslutna i de dubbla citattecken, lägger den till ett null-tecken i slutet som standard.

Hur man deklarerar en sträng?

Så här kan du deklarera strängar:

 char s(5); 

Här har vi förklarat en sträng på 5 tecken.

Hur initierar man strängar?

Du kan initialisera strängar på ett antal sätt.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Låt oss ta ett annat exempel:

 char c(5) = "abcde";

Här försöker vi tilldela 6 tecken (det sista tecknet är '') till en charmatris med 5 tecken. Det här är dåligt och du ska aldrig göra det här.

Tilldela värden till strängar

Arrayer och strängar är andra klassens medborgare i C; de stöder inte uppdragsoperatören när den deklareras. Till exempel,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Obs! Använd strcpy () -funktionen för att kopiera strängen istället.

Läs sträng från användaren

Du kan använda scanf()funktionen för att läsa en sträng.

Den scanf()funktion läser sekvensen av tecken tills den stöter på blanktecken (utrymme, nyrad, flik, etc.).

Exempel 1: scanf () för att läsa en sträng

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Produktion

 Ange namn: Dennis Ritchie Ditt namn är Dennis.

Trots att Dennis Ritchie deltog i ovanstående program lagrades bara "Dennis" i namnsträngen. Det beror på att det fanns ett utrymme efter Dennis.

Hur läser jag en textrad?

Du kan använda fgets()funktionen för att läsa en strängrad. Och du kan använda för puts()att visa strängen.

Exempel 2: fgets () och puts ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Produktion

 Ange namn: Tom Hanks Namn: Tom Hanks 

Här har vi använt fgets()funktionen för att läsa en sträng från användaren.

fgets(name, sizeof(name), stdlin); // read string

De sizeof(name)resultaten till 30. Därför kan vi ta max 30 tecken som ingång som är storleken på namnet sträng.

För att skriva ut strängen har vi använt puts(name);.

Obs: Den gets()funktionen kan också vara att ta input från användaren. Det tas dock bort från C-standarden.
Det beror på gets()att du kan mata in valfri längd på tecken. Därför kan det finnas ett buffertflöde.

Skicka strängar till funktioner

Strängar kan skickas till en funktion på liknande sätt som arrays. Lär dig mer om att skicka matriser till en funktion.

Exempel 3: Skicka sträng till en funktion

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Strängar och pekare

På samma sätt som arrays "sönderdelas" strängnamn till pekare. Därför kan du använda pekare för att manipulera delar av strängen. Vi rekommenderade att du kontrollerar C-matriser och pekare innan du kontrollerar detta exempel.

Exempel 4: Strängar och pekare

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Vanliga strängfunktioner

  • strlen () - beräknar längden på en sträng
  • strcpy () - kopierar en sträng till en annan
  • strcmp () - jämför två strängar
  • strcat () - sammanfogar två strängar

Intressanta artiklar...