Strängar i C: Hur man deklarerar och initierar en strängvariabler i C
Vad är String i C?
A Sträng i C är inget annat än en samling tecken i en linjär sekvens. 'C' behandlar alltid en sträng som en enskild data även om den innehåller blanksteg. Ett enstaka tecken definieras med en citattecken. En sträng representeras med dubbla citattecken.
Example, "Welcome to the world of programming!"
'C' tillhandahåller standardbibliotek som innehåller många funktioner som kan användas för att enkelt utföra komplicerade operationer på Strings i C.
Hur deklarerar man en sträng i C?
AC String är en enkel array med char som datatyp. 'C' språk stöder inte direkt sträng som datatyp. Därför, för att visa en sträng i C, måste du använda en teckenuppsättning.
Den allmänna syntaxen för att deklarera en variabel som en sträng i C är följande,
char string_variable_name [array_size];
Den klassiska Declaration of Strings kan göras på följande sätt:
char string_name[string_length] = "string";
Storleken på en array måste definieras när en C String-variabel deklareras eftersom den används för att beräkna hur många tecken som kommer att lagras inuti strängvariabeln i C. Några giltiga exempel på strängdeklaration är följande,
char first_name[15]; //declaration of a string variable char last_name[15];
Ovanstående exempel representerar strängvariabler med en matrisstorlek på 15. Detta betyder att den givna C-strängmatrisen kan innehålla högst 15 tecken. Indexeringen av array börjar från 0 och kommer därför att lagra tecken från en 0-14 position. C-kompilatorn lägger automatiskt till ett NULL-tecken '\0' till den skapade teckenuppsättningen.
Hur initierar man en sträng i C?
Låt oss studera stränginitieringen i C. Följande exempel visar initieringen av strängar i C,
char first_name[15] = "ANTHONY"; char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declaration char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */ char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */ char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
I string3 måste NULL-tecknet läggas till uttryckligen, och tecknen omges av enkla citattecken.
'C' låter oss också initiera en strängvariabel utan att definiera storleken på teckenuppsättningen. Det kan göras på följande sätt,
char first_name[ ] = "NATHAN";
Namnet på Strings i C fungerar som en pekare eftersom det i grunden är en array.
C String Input: C Program för att läsa sträng
När du skriver interaktiva program som ber användaren om inmatning tillhandahåller C funktionerna scanf(), gets() och fgets() för att hitta en textrad som användaren har skrivit in.
När vi använder scanf() för att läsa, använder vi formatspecifikationen "%s" utan att använda "&" för att komma åt variabeladressen eftersom ett arraynamn fungerar som en pekare.
Till exempel:
#include <stdio.h> int main() { char name[10]; int age; printf("Enter your first name and age: \n"); scanf("%s %d", name, &age); printf("You entered: %s %d",name,age); }
Produktion:
Enter your first name and age: John_Smith 48
Problemet med scanf-funktionen är att den aldrig läser hela strängar i C. Den kommer att stoppa läsningsprocessen så fort blanksteg, formulärmatning, vertikal tabb, nyrad eller en vagnretur inträffar. Anta att vi ger indata som "Guru99 Tutorials" så kommer scanf-funktionen aldrig att läsa en hel sträng eftersom ett blanksteg förekommer mellan de två namnen. Scanf-funktionen kommer bara att läsa Guru99.
För att läsa en sträng som innehåller mellanslag använder vi funktionen gets(). Gets ignorerar blanktecken. Det tar stopp
läsning när en ny rad nås (Enter-tangenten trycks ned).
Till exempel:
#include <stdio.h> int main() { char full_name[25]; printf("Enter your full name: "); gets(full_name); printf("My full name is %s ",full_name); return 0; }
Produktion:
Enter your full name: Dennis Ritchie My full name is Dennis Ritchie
Ett annat säkrare alternativ till gets() är funktionen fgets() som läser ett specificerat antal tecken.
Till exempel:
#include <stdio.h> int main() { char name[10]; printf("Enter your name plz: "); fgets(name, 10, stdin); printf("My name is %s ",name); return 0;}
Produktion:
Enter your name plz: Carlos My name is Carlos
Argumenten fgets() är:
- strängens namn,
- antalet tecken att läsa,
- stdin betyder att läsa från standardingången som är tangentbordet.
C String Output: C-program för att skriva ut en sträng
Standardfunktionen printf används för att skriva ut eller visa strängar i C på en utenhet. Formatspecifikationen som används är %s
Exempel,
printf("%s", name);
Strängutmatning görs med funktionerna fputs() och printf().
fputs() funktion
Fputs() behöver namnet på strängen och en pekare till var du vill visa texten. Vi använder stdout som refererar till standardutdata för att kunna skriva ut till skärmen.
Till exempel:
#include <stdio.h> int main() {char town[40]; printf("Enter your town: "); gets(town); fputs(town, stdout); return 0;}
Produktion:
Enter your town: New York New York
sätter funktion
Puts-funktionen används för att skriva ut sträng i C på en utmatningsenhet och flytta markören tillbaka till den första positionen. En puts-funktion kan användas på följande sätt,
#include <stdio.h> int main() { char name[15]; gets(name); //reads a string puts(name); //displays a string return 0;}
Syntaxen för denna funktion är jämförelsevis enkel än andra funktioner.
Stråkbiblioteket
Standard 'C'-biblioteket tillhandahåller olika funktioner för att manipulera strängarna i ett program. Dessa funktioner kallas även stränghanterare. Alla dessa hanterare är närvarande inuti header-fil.
Funktion | Syfte |
---|---|
strlen() | Denna funktion används för att hitta en längd på en sträng. Den returnerar hur många tecken som finns i en sträng exklusive NULL-tecknet. |
strcat(str1, str2) | Denna funktion används för att kombinera två strängar för att bilda en enda sträng. Den lägger till eller sammanfogar str2 till slutet av str1 och returnerar en pekare till str1. |
strcmp(str1, str2) | Denna funktion används för att jämföra två strängar med varandra. Den returnerar 0 om str1 är lika med str2, mindre än 0 om str1 < str2, och större än 0 om str1 > str2. |
Låt oss överväga programmet nedan som visar strängbiblioteksfunktioner:
#include <stdio.h> #include <string.h> int main () { //string initialization char string1[15]="Hello"; char string2[15]=" World!"; char string3[15]; int val; //string comparison val= strcmp(string1,string2); if(val==0){ printf("Strings are equal\n"); } else{ printf("Strings are not equal\n"); } //string concatenation printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world! //string length printf("\nLength of first string:%d",strlen(string1)); printf("\nLength of second string:%d",strlen(string2)); //string copy printf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3 return 0; }
Produktion:
Strings are not equal Concatenated string:Hello World! Length of first string:12 Length of second string:7 Copied string is:Hello World!
Andra viktiga biblioteksfunktioner är:
- strncmp(str1, str2, n): den returnerar 0 om de första n tecknen i str1 är lika med de första n tecknen i str2, mindre än 0 om str1 < str2, och större än 0 om str1 > str2.
- strncpy(str1, str2, n) Denna funktion används för att kopiera en sträng från en annan sträng. Kopierar de första n tecknen i str2 till str1
- strchr(str1, c): den returnerar en pekare till den första förekomsten av char c i str1, eller NULL om tecknet inte hittas.
- strrchr(str1, c): den söker str1 omvänt och returnerar en pekare till positionen för char c i str1, eller NULL om tecknet inte hittas.
- strstr(str1, str2): den returnerar en pekare till den första förekomsten av str2 i str1, eller NULL om str2 inte hittas.
- strncat(str1, str2, n) Lägger till (sammanfogar) de första n tecknen i str2 till slutet av str1 och returnerar en pekare till str1.
- strlwr(): för att konvertera sträng till gemener
- strupr(): för att konvertera sträng till versaler
- strrev(): för att vända strängen
Konvertera en sträng till ett tal
I C-programmering kan vi konvertera en sträng med numeriska tecken till ett numeriskt värde för att förhindra ett körtidsfel. Stdio.h-biblioteket innehåller följande funktioner för att konvertera en sträng till ett tal:
- int atoi(str) Står för ASCII till heltal; den konverterar str till det ekvivalenta int-värdet. 0 returneras om det första tecknet inte är ett tal eller inga siffror påträffas.
- double atof(str) Står för att ASCII ska flyta, den konverterar str till motsvarande dubbelvärde. 0.0 returneras om det första tecknet inte är ett nummer eller inga siffror påträffas.
- long int atol(str) Står för ASCII till long int, Konverterar str till motsvarande långa heltalsvärde. 0 returneras om det första tecknet inte är ett tal eller inga siffror påträffas.
Följande program visar atoi()-funktionen:
#include <stdio.h> int main() {char *string_id[10]; int ID; printf("Enter a number: "); gets(string_id); ID = atoi(string_id); printf("you enter %d ",ID); return 0;}
Produktion:
Enter a number: 221348 you enter 221348
- En strängpekardeklaration som char *string = "språk" är en konstant och kan inte ändras.
Sammanfattning
- En sträng är en sekvens av tecken lagrade i en teckenuppsättning.
- En sträng är en text omsluten av dubbla citattecken.
- Ett tecken som "d" är inte en sträng och det indikeras med enkla citattecken.
- 'C' tillhandahåller standardbiblioteksfunktioner för att manipulera strängar i ett program. Strängmanipulatorer lagras i header-fil.
- En sträng måste deklareras eller initieras innan den används i ett program.
- Det finns olika in- och utgångssträngsfunktioner, var och en av dem har sina funktioner.
- Glöm inte att inkludera strängbiblioteket för att fungera med dess funktioner
- Vi kan konvertera sträng till nummer genom atoi(), atof() och atol() som är mycket användbara för kodnings- och avkodningsprocesser.
- Vi kan manipulera olika strängar genom att definiera en array av strängar i C.