Hva er streng i C?
En streng i C er bare en samling av tegn i en lineær sekvens. 'C' behandler alltid en streng en enkelt data, selv om den inneholder mellomrom. Et enkelt tegn defineres ved å bruke et enkelt tilbud. En streng er representert med doble anførselstegn.
Example, "Welcome to the world of programming!"
'C' gir standard bibliotek
I denne veiledningen vil du lære-
- Hvordan erklære og initialisere en streng i C
- String Input: Les en streng
- Strengutgang: Skriv ut / vis en streng
- fputs () -funksjon
- setter funksjon
- Strengbiblioteket
- Konvertere en streng til et tall
Hvordan erklære og initialisere en streng i C
AC String er en enkel matrise med char som datatype. 'C' språk støtter ikke streng som datatype direkte. Derfor, for å vise en streng i C, må du gjøre bruk av et tegnarray.
Den generelle syntaksen for å erklære en variabel som en streng i C er som følger,
char string_variable_name [array_size];
Den klassiske strengerklæringen kan gjøres som følger:
char string_name[string_length] = "string";
Størrelsen på en matrise må defineres mens deklarerer en C-strengvariabel fordi den brukes til å beregne hvor mange tegn som skal lagres inne i strengvariabelen i C. Noen gyldige eksempler på strengerklæringen er som følger,
char first_name[15]; //declaration of a string variablechar last_name[15];
Ovenstående eksempel representerer strengvariabler med en matrisestørrelse på 15. Dette betyr at den gitte C-strengmatrisen kan inneholde maksimalt 15 tegn. Indekseringen av matrisen begynner fra 0, og den lagrer tegn fra 0-14 posisjon. C-kompilatoren legger automatisk til et NULL-tegn '\ 0' i tegnoppstillingen som er opprettet.
La oss studere strenginitialiseringen i C. Følgende eksempel viser initialiseringen av strenger 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 må NULL-tegnet legges eksplisitt til, og tegnene er omsluttet av enkelt anførselstegn.
'C' lar oss også initialisere en strengvariabel uten å definere størrelsen på tegnmatrisen. Det kan gjøres på følgende måte,
char first_name[ ] = "NATHAN";
Navnet på Strings in C fungerer som en peker fordi det i utgangspunktet er en matrise.
String Input: Les en streng
Når du skriver interaktive programmer som ber brukeren om innspill, gir C funksjonene scanf (), gets () og fgets () for å finne en tekstlinje som er skrevet inn fra brukeren.
Når vi bruker scanf () for å lese, bruker vi formatet "% s" uten å bruke "&" for å få tilgang til variabeladressen fordi et matrisenavn fungerer som en peker. 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);}
Produksjon:
Enter your first name and age:John_Smith 48
Problemet med scanf-funksjonen er at den aldri leser hele strenger i C. Det vil stoppe leseprosessen så snart mellomrom, skjemamat, vertikal fane, ny linje eller vognretur oppstår. Anta at vi gir innspill som "Guru99 Tutorials", så vil scanf-funksjonen aldri lese en hel streng som et mellomromstegn forekommer mellom de to navnene. Scanf-funksjonen vil bare lese Guru99.
For å lese en streng som inneholder mellomrom, bruker vi get () -funksjonen. Gets ignorerer de hvite områdene. Den slutter å lese når en ny linje er nådd (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;}
Produksjon:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Et annet tryggere alternativ til gets () er funksjonen fgets () som leser et spesifisert antall 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;}
Produksjon:
Enter your name plz: CarlosMy name is Carlos
Argumentene for fgets () er:
- strengnavnet,
- antall tegn å lese,
- stdin betyr å lese fra standardinngangen som er tastaturet.
Strengutgang: Skriv ut / vis en streng
Standard printf-funksjonen brukes til å skrive ut eller vise strenger i C på en utdataenhet. Formatspesifikatoren som brukes er% s
Eksempel,
printf("%s", name);
Strengutdata utføres med funksjonene fputs () og printf ().
fputs () -funksjon
Fputs () trenger navnet på strengen og en peker der du vil vise teksten. Vi bruker stdout som refererer til standard utdata for å skrive ut på skjermen. For eksempel:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Produksjon:
Enter your town: New YorkNew York
setter funksjon
Put-funksjonen brukes til å skrive ut streng i C på en utdataenhet og flytte markøren tilbake til første posisjon. En put-funksjon kan brukes på følgende måte,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Syntaksen til denne funksjonen er relativt enkel enn andre funksjoner.
Strengbiblioteket
Standard C-biblioteket har forskjellige funksjoner for å manipulere strengene i et program. Disse funksjonene kalles også som strenghåndterere. Alle disse håndtererne er tilstede i
Funksjon | Hensikt |
strlen () | Denne funksjonen brukes til å finne en lengde på en streng. Den returnerer hvor mange tegn som er tilstede i en streng unntatt NULL-tegnet. |
strcat (str1, str2) | Denne funksjonen brukes til å kombinere to strenger sammen for å danne en enkelt streng. Den legger til eller sammenkobler str2 til slutten av str1 og returnerer en peker til str1. |
strcmp (str1, str2) | Denne funksjonen brukes til å sammenligne to strenger med hverandre. Den returnerer 0 hvis str1 er lik str2, mindre enn 0 hvis str1 |
La oss vurdere programmet nedenfor som viser strengbiblioteksfunksjoner:
#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;}
Produksjon:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Andre viktige biblioteksfunksjoner er:
- strncmp (str1, str2, n): den returnerer 0 hvis de første n tegnene i str1 er lik de første n tegnene i str2, mindre enn 0 hvis str1
str2. - strncpy (str1, str2, n) Denne funksjonen brukes til å kopiere en streng fra en annen streng. Kopierer de første n tegnene i str2 til str1
- strchr (str1, c): den returnerer en peker til den første forekomsten av char c i str1, eller NULL hvis tegnet ikke ble funnet.
- strrchr (str1, c): den søker str1 i omvendt retning og returnerer en peker til posisjonen til char c i str1, eller NULL hvis tegnet ikke blir funnet.
- strstr (str1, str2): den returnerer en peker til den første forekomsten av str2 i str1, eller NULL hvis str2 ikke ble funnet.
- strncat (str1, str2, n) Legger til (sammenkobler) første n tegn i str2 til slutten av str1 og returnerer en peker til str1.
- strlwr (): for å konvertere streng til små bokstaver
- strupr (): for å konvertere streng til store bokstaver
- strrev (): å reversere streng
Konvertere en streng til et tall
I C-programmering kan vi konvertere en streng med numeriske tegn til en numerisk verdi for å forhindre en kjøretidsfeil. Stdio.h-biblioteket inneholder følgende funksjoner for å konvertere en streng til et tall:
- int atoi (str) Står for at ASCII skal være heltall; den konverterer str til tilsvarende int-verdi. 0 returneres hvis det første tegnet ikke er et tall eller det ikke er noen tall.
- double atof (str) Står for at ASCII skal flyte, den konverterer str til tilsvarende dobbel verdi. 0.0 returneres hvis det første tegnet ikke er et tall eller ingen tall oppdages.
- long int atol (str) Står for ASCII til long int, Konverterer str til ekvivalent langt heltall. 0 returneres hvis det første tegnet ikke er et tall eller det ikke er noen tall.
Følgende program viser atoi () -funksjonen:
#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;}
Produksjon:
Enter a number: 221348you enter 221348
- En strengpekererklæring som char * string = "språk" er en konstant og kan ikke endres.
Sammendrag
- En streng er en sekvens av tegn som er lagret i en tegnmatrise.
- En streng er en tekst som er omsluttet av doble anførselstegn.
- Et tegn som 'd' er ikke en streng, og det er angitt med enkle anførselstegn.
- 'C' gir standard biblioteksfunksjoner for å manipulere strenger i et program. Strengmanipulatorer lagres i
header-fil. - En streng må deklareres eller initialiseres før den brukes i et program.
- Det er forskjellige inngangs- og utgangsstrengfunksjoner, hver av dem har sine funksjoner.
- Ikke glem å ta med strengbiblioteket for å jobbe med funksjonene
- Vi kan konvertere streng til nummer gjennom atoi (), atof () og atol () som er veldig nyttige for koding og dekoding av prosesser.
- Vi kan manipulere forskjellige strenger ved å definere en rekke strenger i C.