Mitä merkkijono on C: ssä?
String C on vain kokoelma merkkien lineaarinen sekvenssi. 'C' käsittelee merkkijonoa aina yksittäisenä datana, vaikka se sisältää välilyöntejä. Yksittäinen merkki määritetään käyttämällä yhden lainauksen esitystä. Merkkijono esitetään kaksoislainausmerkeillä.
Example, "Welcome to the world of programming!"
'C' tarjoaa vakiokirjaston
Tässä opetusohjelmassa opit-
- Merkkijonon julistaminen ja alustaminen C: ssä
- Merkkijonon syöttö: Lue merkkijono
- Merkkijono: Tulosta / näytä merkkijono
- tulot () -toiminto
- laittaa toiminnon
- Merkkijonokirjasto
- Merkkijonon muuntaminen luvuksi
Merkkijonon julistaminen ja alustaminen C: ssä
AC-merkkijono on yksinkertainen matriisi, jossa tietotyyppi on char. C-kieli ei tue suoraan merkkijonoa tietotyyppinä. Jos haluat näyttää merkkijonon C-muodossa, sinun on käytettävä merkistöä.
Muuttujan julistaminen merkkijonoksi C: ssä on seuraava,
char string_variable_name [array_size];
Klassinen merkkijonoilmoitus voidaan tehdä seuraavasti:
char string_name[string_length] = "string";
Taulukon koko on määriteltävä C-merkkijonomuuttujaa ilmoitettaessa, koska sitä käytetään laskemaan, kuinka monta merkkiä C-merkkijonomuuttujaan on tarkoitus tallentaa.
char first_name[15]; //declaration of a string variablechar last_name[15];
Yllä oleva esimerkki edustaa merkkijonomuuttujia, joiden matriisikoko on 15. Tämä tarkoittaa, että annettu C-merkkijonoryhmä pystyy pitämään korkeintaan 15 merkkiä. Taulukon indeksointi alkaa nollasta, joten se tallentaa merkit asemasta 0-14. C-kääntäjä lisää automaattisesti NULL-merkin \ \ 0 luotuun merkistöön.
Tutkitaan merkkijonon alustus C: ssä. Seuraava esimerkki osoittaa merkkijonojen alustamisen C: ssä,
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*/
Merkkijonossa 3 NULL-merkki on lisättävä erikseen, ja merkit on liitetty lainausmerkeihin.
C: n avulla voimme myös alustaa merkkijonomuuttujan määrittelemättä merkkimatriisin kokoa. Se voidaan tehdä seuraavalla tavalla,
char first_name[ ] = "NATHAN";
Merkkijonojen nimi C: ssä toimii osoittimena, koska se on pohjimmiltaan taulukko.
Merkkijonon syöttö: Lue merkkijono
Kun kirjoitat vuorovaikutteisia ohjelmia, jotka pyytävät käyttäjää syöttämään tietoja, C tarjoaa scanf () -, get () - ja fgets () -toiminnot löytääksesi käyttäjältä syötetyn tekstirivin.
Kun käytämme scanf (): ta lukemiseen, käytämme "% s" -määritelmää käyttämättä "&": tä muuttujan osoitteen käyttämiseen, koska taulukon nimi toimii osoittimena. Esimerkiksi:
#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);}
Tuotos:
Enter your first name and age:John_Smith 48
Scanf-toiminnon ongelmana on, että se ei koskaan lue kokonaisia merkkijonoja C: ssä. Se pysäyttää lukuprosessin heti, kun välilyönti, lomakesyöttö, pystysuora välilehti, uusi viiva tai rivinvaihto tapahtuu. Oletetaan, että syötämme syötteen "Guru99-oppaat" -toiminnolla, silloin scanf-toiminto ei koskaan lue koko merkkijonoa, koska kahden nimen välissä on välilyönti. Scanf-toiminto lukee vain Guru99: n.
Jos haluat lukea merkkijono sisältää välilyöntejä, käytämme funktiota get (). Gets jättää välilyönnit huomiotta. Se lopettaa lukemisen, kun uusi rivi on saavutettu (Enter-näppäintä painetaan).
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Tuotos:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Toinen turvallisempi vaihtoehto get (): lle on fgets () -toiminto, joka lukee tietyn määrän merkkejä. Esimerkiksi:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Tuotos:
Enter your name plz: CarlosMy name is Carlos
Fgets () -argumentit ovat:
- merkkijonon nimi,
- luettavien merkkien lukumäärä,
- stdin tarkoittaa lukemista vakiotulosta, joka on näppäimistö.
Merkkijono: Tulosta / näytä merkkijono
Vakio-printf-toimintoa käytetään tulostamaan tai näyttämään merkkijonot C-muodossa tulostuslaitteessa. Käytetty muotomääritin on% s
Esimerkki,
printf("%s", name);
Merkkijonolähtö tehdään toiminnoilla fputs () ja printf ().
tulot () -toiminto
Syötteet () tarvitsevat merkkijonon nimen ja osoittimen kohtaan, johon haluat näyttää tekstin. Näytölle tulostamiseen käytetään stdout-tiedostoa, joka viittaa vakiolähtöön.
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Tuotos:
Enter your town: New YorkNew York
laittaa toiminnon
Put-toimintoa käytetään tulostamaan merkkijono C-muodossa tulostuslaitteessa ja siirtämään kohdistin takaisin ensimmäiseen asentoon. Put-toimintoa voidaan käyttää seuraavalla tavalla,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Tämän toiminnon syntaksi on suhteellisen yksinkertainen kuin muut toiminnot.
Merkkijonokirjasto
Tavallinen C-kirjasto tarjoaa erilaisia toimintoja merkkijonojen manipuloimiseksi ohjelmassa. Näitä toimintoja kutsutaan myös merkkijonon käsittelijöiksi. Kaikki nämä käsittelijät ovat
Toiminto | Tarkoitus |
strlen () | Tätä toimintoa käytetään merkkijonon pituuden löytämiseen. Se palauttaa merkkijonossa olevien merkkien lukuun ottamatta NULL-merkkiä. |
strcat (str1, str2) | Tätä toimintoa käytetään yhdistämään kaksi merkkijonoa yhteen merkkijonoksi. Se lisää tai ketjuttaa str2: n str1: n loppuun ja palauttaa osoittimen str1: een. |
strcmp (str1, str2) | Tätä toimintoa käytetään kahden merkkijonon vertaamiseen toisiinsa. Se palauttaa arvon 0, jos str1 on yhtä suuri kuin str2, alle 0, jos str1 |
Tarkastellaan seuraavaa ohjelmaa, joka osoittaa merkkijonokirjastotoiminnot:
#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;}
Tuotos:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Muita tärkeitä kirjastotoimintoja ovat:
- strncmp (str1, str2, n): palauttaa arvon 0, jos str1: n ensimmäiset n merkkiä ovat yhtä suuria kuin str2: n ensimmäiset n merkkiä, alle 0, jos str1
str2. - strncpy (str1, str2, n) Tätä toimintoa käytetään kopioimaan merkkijono toisesta merkkijonosta. Kopioi str2: n ensimmäiset n merkkiä muotoon str1
- strchr (str1, c): se palauttaa osoittimen char c: n ensimmäiseen esiintymiseen str1: ssä tai NULL, jos merkkiä ei löydy.
- strrchr (str1, c): se etsii str1: tä taaksepäin ja palauttaa osoittimen merkin kohtaan c str1 tai NULL, jos merkkiä ei löydy.
- strstr (str1, str2): se palauttaa osoittimen str2: n ensimmäiseen esiintymiseen str1: ssä, tai NULL, jos str2: ta ei löydy.
- strncat (str1, str2, n) Liittää (ketjuttaa) str2: n ensimmäiset n merkkiä str1: n loppuun ja palauttaa osoittimen kohtaan str1.
- strlwr (): muuntaa merkkijono pieniksi kirjaimiksi
- strupr (): muuntaa merkkijono isoksi
- strrev (): kääntää merkkijono
Merkkijonon muuntaminen luvuksi
C-ohjelmoinnissa voimme muuntaa merkkijonon numeeriseksi numeroarvoksi ajonaikaisen virheen estämiseksi. Stdio.h-kirjasto sisältää seuraavat toiminnot merkkijonon muuntamiseksi luvuksi:
- int atoi (str) ASCII tarkoittaa kokonaislukua; se muuntaa str: n ekvivalentiksi int-arvoksi. 0 palautetaan, jos ensimmäinen merkki ei ole numero tai numeroita ei löydy.
- double atof (str) Seisoo ASCII: n kelluvan, se muuntaa str: n vastaavaksi kaksinkertaiseksi arvoksi. 0,0 palautetaan, jos ensimmäinen merkki ei ole numero tai numeroita ei löydy.
- long int atol (str) ASCII on pitkä int, Muuntaa str: n vastaavaksi pitkäksi kokonaisluvuksi. 0 palautetaan, jos ensimmäinen merkki ei ole numero tai numeroita ei löydy.
Seuraava ohjelma osoittaa atoi () -toiminnon:
#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;}
Tuotos:
Enter a number: 221348you enter 221348
- Merkkijonon osoittimen ilmoitus, kuten char * string = "language", on vakio, eikä sitä voi muokata.
Yhteenveto
- Merkkijono on merkkijonoon tallennettujen merkkien sarja.
- Merkkijono on teksti, joka on suljettu lainausmerkeissä.
- Merkki, kuten 'd', ei ole merkkijono, ja se ilmaistaan lainausmerkeillä.
- 'C' tarjoaa kirjaston vakiotoiminnot merkkijonojen manipuloimiseksi ohjelmassa. Merkkijonon manipulaattorit tallennetaan otsikkotiedostoon
. - Merkkijono on ilmoitettava tai alustettava ennen käyttöä ohjelmaan.
- Syöttö- ja lähtömerkkijonofunktioita on erilaisia, jokaisella niistä on omat piirteensä.
- Älä unohda sisällyttää merkkijonokirjastoa toimimaan sen toimintojen kanssa
- Voimme muuntaa merkkijonon numeroiksi kautta atoi (), atof () ja atol (), jotka ovat erittäin hyödyllisiä koodaus- ja dekoodausprosesseissa.
- Voimme manipuloida erilaisia merkkijonoja määrittelemällä joukon merkkijonoja C: ssä.