Vad är sträng i C?
En sträng i C är inget annat än en samling tecken i en linjär sekvens. 'C' behandlar alltid en sträng en enda data även om den innehåller vita utrymmen. En enda karaktär definieras med hjälp av en enda offertrepresentation. En sträng representeras med dubbla citattecken.
Example, "Welcome to the world of programming!"
'C' tillhandahåller standardbibliotek
I den här handledningen lär du dig-
- Hur man deklarerar och initialiserar en sträng i C.
- Strängingång: Läs en sträng
- Strängutgång: Skriv ut / visa en sträng
- fputs () -funktion
- sätter funktion
- Strängbiblioteket
- Konvertera en sträng till ett tal
Hur man deklarerar och initialiserar 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 måste du använda en teckenmatris för att visa en sträng i C.
Den allmänna syntaxen för att deklarera en variabel som en sträng i C är som följer,
char string_variable_name [array_size];
Den klassiska strängdeklarationen kan göras enligt följande:
char string_name[string_length] = "string";
Storleken på en matris måste definieras vid deklarering av en C-strängvariabel eftersom den används för att beräkna hur många tecken som kommer att lagras i strängvariabeln i C. Några giltiga exempel på strängdeklaration är som följer,
char first_name[15]; //declaration of a string variablechar last_name[15];
Ovanstående exempel representerar strängvariabler med en matrisstorlek på 15. Detta betyder att den angivna C-strängmatrisen kan innehålla högst 15 tecken. Indexeringen av matrisen börjar från 0, varför den kommer att lagra tecken från en position 0-14. C-kompilatorn lägger automatiskt till ett NULL-tecken '\ 0' i den skapade teckenuppsättningen.
Låt oss studera stränginitialiseringen i C. Följande exempel visar initialiseringen 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 declarationchar 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 sträng 3 måste NULL-tecknet läggas till uttryckligen och tecknen är inneslutna i enstaka citattecken.
'C' låter oss också initiera en strängvariabel utan att definiera teckenuppsättningens storlek. Det kan göras på följande sätt,
char first_name[ ] = "NATHAN";
Namnet på Strängar i C fungerar som en pekare eftersom det i grunden är en matris.
Strängingång: Läs en sträng
När du skriver interaktiva program som ber användaren om inmatning, tillhandahåller C funktionerna scanf (), get () och fgets () för att hitta en textrad från användaren.
När vi använder scanf () för att läsa använder vi formatet "% s" -format utan att använda "&" för att komma åt variabeladressen eftersom ett arraynamn fungerar som en pekare. Till exempel:
#includeint 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. Det kommer att stoppa läsningen så snart blanksteg, formulärmatning, vertikal flik, ny linje eller en vagnretur sker. Anta att vi ger input som "Guru99 Tutorials" då läser scanf-funktionen aldrig en hel sträng eftersom ett mellanslagstecken förekommer mellan de två namnen. Scanf-funktionen läser bara Guru99.
För att läsa en sträng som innehåller mellanslag använder vi funktionen get (). Gets ignorerar de vita utrymmena. Det slutar läsa när en ny rad nås (Enter-tangenten trycks).
#includeint 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 RitchieMy full name is Dennis Ritchie
Ett annat säkrare alternativ till get () är fgets () -funktionen som läser ett visst antal tecken. Till exempel:
#includeint 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: CarlosMy name is Carlos
Argumenten för fgets () är:
- strängnamnet,
- antalet tecken som ska läsas,
- stdin betyder att läsa från standardingången som är tangentbordet.
Strängutgång: Skriv ut / visa en sträng
Standard printf-funktionen används för att skriva ut eller visa strängar i C på en utmatningsenhet. Formatformatet som används är% s
Exempel,
printf("%s", name);
Strängutmatning görs med funktionerna fputs () och printf ().
fputs () -funktion
Fputs () behöver strängens namn och en pekare dit du vill visa texten. Vi använder stdout som refererar till standardutmatningen för att skriva ut på skärmen. Till exempel:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Produktion:
Enter your town: New YorkNew York
sätter funktion
Put-funktionen används för att skriva ut sträng i C på en utmatningsenhet och flytta markören tillbaka till första positionen. En put-funktion kan användas på följande sätt,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Syntaxen för denna funktion är jämförelsevis enkel än andra funktioner.
Strängbiblioteket
Standard-C-biblioteket tillhandahåller olika funktioner för att manipulera strängarna i ett program. Dessa funktioner kallas också som stränghanterare. Alla dessa hanterare finns i
Fungera | Ändamål |
strlen () | Denna funktion används för att hitta en stränglängd. Det 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 tillsammans 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. Det returnerar 0 om str1 är lika med str2, mindre än 0 om str1 |
Låt oss överväga programmet nedan som visar strängbiblioteksfunktioner:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Produktion:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied 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. - 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 tecken inte hittades.
- strrchr (str1, c): den söker str1 i omvänd ordning och returnerar en pekare till positionen för char c i str1, eller NULL om tecken inte hittas.
- strstr (str1, str2): den returnerar en pekare till den första förekomsten av str2 i str1, eller NULL om str2 inte hittades.
- strncat (str1, str2, n) Lägger till (sammanfogar) första n tecken 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 (): omvänd sträng
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. Biblioteket stdio.h 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 omvandlar str till motsvarande int-värde. 0 returneras om det första tecknet inte är ett nummer eller om inga siffror påträffas.
- double atof (str) Står för att ASCII ska flyta, det omvandlar 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ångt helvärde. 0 returneras om det första tecknet inte är ett nummer eller om inga siffror påträffas.
Följande program visar atoi () -funktionen:
#includeint 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: 221348you 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 som lagras i en teckenmatris.
- En sträng är en text som är innesluten i dubbla citattecken.
- Ett tecken som 'd' är inte en sträng och det indikeras med enstaka citattecken.
- 'C' tillhandahåller standardbiblioteksfunktioner för att manipulera strängar i ett program. Strängmanipulatorer lagras i
rubrikfil. - En sträng måste deklareras eller initieras innan den används i ett program.
- Det finns olika in- och utgångssträngfunktioner, var och en av dem har sina funktioner.
- Glöm inte att inkludera strängbiblioteket för att arbeta med dess funktioner
- Vi kan konvertera sträng till nummer genom atoi (), atof () och atol () som är mycket användbara för kodning och avkodning.
- Vi kan manipulera olika strängar genom att definiera en rad strängar i C.