Hvad er streng i C?
En streng i C er intet andet end en samling af tegn i en lineær sekvens. 'C' behandler altid en streng en enkelt data, selvom den indeholder mellemrum. Et enkelt tegn defineres ved hjælp af repræsentation af et enkelt tilbud. En streng er repræsenteret ved hjælp af dobbelt anførselstegn.
Example, "Welcome to the world of programming!"
'C' leverer standardbibliotek
I denne vejledning lærer du-
- Sådan erklæres og initialiseres en streng i C
- String Input: Læs en streng
- Strengoutput: Udskriv / vis en streng
- fputs () funktion
- sætter funktion
- Strengebiblioteket
- Konvertering af en streng til et tal
Sådan erklæres og initialiseres en streng i C
AC String er et simpelt array med char som datatype. 'C' sprog understøtter ikke direkte streng som datatype. Derfor skal du bruge et tegnarray for at få vist en streng i C.
Den generelle syntaks til at erklære en variabel som en streng i C er som følger,
char string_variable_name [array_size];
Den klassiske stringserklæring kan gøres som følger:
char string_name[string_length] = "string";
Størrelsen på en matrix skal defineres, mens en C-strengvariabel erklæres, fordi den bruges til at beregne, hvor mange tegn der skal gemmes inde i strengvariablen i C. Nogle gyldige eksempler på strengangivelse er som følger,
char first_name[15]; //declaration of a string variablechar last_name[15];
Ovenstående eksempel repræsenterer strengvariabler med en matrixstørrelse på 15. Dette betyder, at det givne C-strengarray højst er i stand til at indeholde 15 tegn. Indekseringen af array begynder fra 0, hvorefter det gemmer tegn fra en 0-14 position. C-compileren tilføjer automatisk et NULL-tegn '\ 0' til det oprettede tegnarray.
Lad os studere strenginitialiseringen i C. Følgende eksempel viser initialiseringen af strenge 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 streng3 skal NULL-tegnet tilføjes eksplicit, og tegnene er lukket i enkelte anførselstegn.
'C' giver os også mulighed for at initialisere en strengvariabel uden at definere størrelsen på tegnarrayet. Det kan gøres på følgende måde,
char first_name[ ] = "NATHAN";
Navnet på Strings i C fungerer som en markør, fordi det grundlæggende er en matrix.
String Input: Læs en streng
Når du skriver interaktive programmer, der beder brugeren om input, leverer C funktionerne scanf (), får () og fgets () til at finde en tekstlinje, der er indtastet fra brugeren.
Når vi bruger scanf () til at læse, bruger vi formatet "% s" -format uden at bruge "&" til at få adgang til variabeladressen, fordi et arraynavn fungerer som en markør. For eksempel:
#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 er, at den aldrig læser hele strenge i C. Det stopper læsningsprocessen, så snart hvidt mellemrum, formularfeed, lodret fane, ny linje eller en vognretur opstår. Antag, at vi giver input som "Guru99 Tutorials", så vil scanf-funktionen aldrig læse en hel streng, da der findes et mellemrumstegn mellem de to navne. Scanf-funktionen læser kun Guru99.
For at læse en streng, der indeholder mellemrum, bruger vi funktionen get (). Gets ignorerer de hvide rum. Den holder op med at læse, når en ny linje er nået (Enter-tasten trykkes). For eksempel:
#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
Et andet sikrere alternativ til get () er fgets () -funktionen, der læser et specificeret antal tegn. For eksempel:
#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
Argumenterne for fgets () er:
- strengnavnet
- antallet af tegn, der skal læses,
- stdin betyder at læse fra standardindgangen, som er tastaturet.
Strengoutput: Udskriv / vis en streng
Standard printf-funktionen bruges til udskrivning eller visning af strenge i C på en outputenhed. Den anvendte formatspecifikator er% s
Eksempel,
printf("%s", name);
Strengoutput udføres med funktionerne fputs () og printf ().
fputs () funktion
Fputs () har brug for navnet på strengen og en markør, hvor du vil vise teksten. Vi bruger stdout, der refererer til standardoutput for at udskrive til skærmen. For eksempel:
#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 bruges til at udskrive streng i C på en outputenhed og flytte markøren tilbage til den første position. En puts-funktion kan bruges på følgende måde,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Syntaksen for denne funktion er forholdsvis enkel end andre funktioner.
Strengebiblioteket
Standard 'C' biblioteket giver forskellige funktioner til at manipulere strengene i et program. Disse funktioner kaldes også strenghandlere. Alle disse handlers er til stede i
Fungere | Formål |
strlen () | Denne funktion bruges til at finde en længde på en streng. Det returnerer, hvor mange tegn der er til stede i en streng eksklusive NULL-tegnet. |
strcat (str1, str2) | Denne funktion bruges til at kombinere to strenge sammen for at danne en enkelt streng. Det tilføjer eller sammenkæder str2 til slutningen af str1 og returnerer en markør til str1. |
strcmp (str1, str2) | Denne funktion bruges til at sammenligne to strenge med hinanden. Det returnerer 0, hvis str1 er lig med str2, mindre end 0, hvis str1 |
Lad os overveje programmet nedenfor, der demonstrerer strengbiblioteksfunktioner:
#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!
Andre vigtige biblioteksfunktioner er:
- strncmp (str1, str2, n): det returnerer 0, hvis de første n tegn i str1 er lig med de første n tegn i str2, mindre end 0, hvis str1
str2. - strncpy (str1, str2, n) Denne funktion bruges til at kopiere en streng fra en anden streng. Kopierer de første n tegn i str2 til str1
- strchr (str1, c): den returnerer en markør til den første forekomst af char c i str1 eller NULL hvis tegn ikke findes.
- strrchr (str1, c): den søger str1 i omvendt retning og returnerer en markør til positionen for char c i str1, eller NULL hvis tegn ikke findes.
- strstr (str1, str2): den returnerer en markør til den første forekomst af str2 i str1 eller NULL, hvis str2 ikke findes.
- strncat (str1, str2, n) Tilføjer (sammenkæder) de første n tegn i str2 til slutningen af str1 og returnerer en markør til str1.
- strlwr (): for at konvertere streng til små bogstaver
- strupr (): for at konvertere streng til store bogstaver
- strrev (): omvendt streng
Konvertering af en streng til et tal
I C-programmering kan vi konvertere en streng med numeriske tegn til en numerisk værdi for at forhindre en kørselstidsfejl. Stdio.h-biblioteket indeholder følgende funktioner til konvertering af en streng til et tal:
- int atoi (str) Står for ASCII til heltal; det konverterer str til den tilsvarende int-værdi. 0 returneres, hvis det første tegn ikke er et tal, eller hvis der ikke er nogen tal.
- dobbelt atof (str) Står for ASCII at flyde, det konverterer str til den tilsvarende dobbelte værdi. 0.0 returneres, hvis det første tegn ikke er et tal, eller hvis der ikke er nogen tal.
- long int atol (str) Står for ASCII til long int, Konverterer str til den ækvivalente lange heltal værdi. 0 returneres, hvis det første tegn ikke er et tal, eller hvis der ikke er nogen tal.
Følgende program demonstrerer 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 strengpointererklæring som char * string = "sprog" er en konstant og kan ikke ændres.
Resumé
- En streng er en sekvens af tegn, der er gemt i et tegnarray.
- En streng er en tekst omgivet af dobbelt anførselstegn.
- Et tegn som 'd' er ikke en streng, og det er angivet med enkelte anførselstegn.
- 'C' giver standardbiblioteksfunktioner til manipulation af strenge i et program. Strengmanipulatorer er gemt i
header-fil. - En streng skal erklæres eller initialiseres, inden den bruges i et program.
- Der er forskellige input- og outputstrengfunktioner, hver af dem har sine funktioner.
- Glem ikke at medtage strengbiblioteket for at arbejde med dets funktioner
- Vi kan konvertere streng til nummer gennem atoi (), atof () og atol (), som er meget nyttige til kodning og afkodning.
- Vi kan manipulere forskellige strenge ved at definere en række strenge i C.