Strenger i C: Hvordan deklarere variabel, initialisere, skrive ut, eksempel

Innholdsfortegnelse:

Anonim

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 som inneholder mange funksjoner som kan brukes til å utføre kompliserte operasjoner enkelt på Strenger i C.

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:

#include 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);}

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:

#include int 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:

#include int 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:

#include int 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,

#include int 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 header-filen.

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 str2.

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:

#include 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;}

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.