Što je niz u C-u?
Gudački u C nije ništa drugo nego skup znakova u linearnom slijedu. 'C' uvijek tretira niz pojedinačnih podataka iako sadrži razmake. Jedan znak definira se pomoću predstavljanja s jednim navodnikom. Niz je predstavljen pomoću dvostrukih navodnika.
Example, "Welcome to the world of programming!"
'C' nudi standardnu knjižnicu
U ovom vodiču naučit ćete-
- Kako deklarirati i inicijalizirati niz u C-u
- Unos niza: Pročitajte niz
- Izlaz niza: Ispis / prikaz niza
- funkcija fputs ()
- stavlja funkciju
- Biblioteka nizova
- Pretvaranje niza u broj
Kako deklarirati i inicijalizirati niz u C-u
AC niz je jednostavan niz s char-om kao vrstom podataka. Jezik 'C' ne podržava izravno niz kao vrstu podataka. Stoga, da biste prikazali niz u C-u, morate koristiti niz znakova.
Opća sintaksa za deklariranje varijable kao niza u C je sljedeća,
char string_variable_name [array_size];
Klasična deklaracija žica može se izvesti na sljedeći način:
char string_name[string_length] = "string";
Veličina polja mora se definirati tijekom deklariranja varijable C String, jer se koristi za izračunavanje koliko će znakova biti pohranjeno unutar varijable stringa u C. Neki valjani primjeri deklaracije niza su kako slijedi:
char first_name[15]; //declaration of a string variablechar last_name[15];
Gornji primjer predstavlja varijable niza s veličinom polja 15. To znači da zadani niz niza C može sadržavati najviše 15 znakova. Indeksiranje niza započinje od 0, dakle pohranit će znakove s položaja 0-14. Kompajler C automatski dodaje NULL znak '\ 0' u stvoreni niz znakova.
Proučimo inicijalizaciju niza u C. Sljedeći primjer pokazuje inicijalizaciju nizova u 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*/
U string3 mora se eksplicitno dodati NULL znak, a znakovi su zatvoreni u pojedinačne navodnike.
'C' nam također omogućuje inicijalizaciju varijable niza bez definiranja veličine polja znakova. To se može učiniti na sljedeći način,
char first_name[ ] = "NATHAN";
Ime niza u C djeluje kao pokazivač jer je u osnovi niz.
Unos niza: Pročitajte niz
Pri pisanju interaktivnih programa koji od korisnika traže unos, C pruža funkcije scanf (), gets () i fgets () za pronalaženje retka teksta koji je korisnik unio.
Kada koristimo scanf () za čitanje, koristimo specifikator formata "% s", a da ne koristimo "&" za pristup adresi varijable jer naziv niza djeluje kao pokazivač. Na primjer:
#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);}
Izlaz:
Enter your first name and age:John_Smith 48
Problem s funkcijom scanf je u tome što ona nikada ne čita cijele žice u C. Zaustavit će postupak čitanja čim se dogodi razmak, dodatak obrasca, vertikalni jezičak, novi redak ili povratak nosača. Pretpostavimo da dajemo unos kao "Vodiči za Guru99", tada funkcija scanf nikada neće pročitati cijeli niz jer se između dva imena pojavljuje razmak. Funkcija scanf čitat će samo Guru99.
Da bismo pročitali niz koji sadrži razmake, koristimo funkciju gets (). Gets ignorira razmake. Prestaje čitati kad se dosegne novi redak (pritisne se tipka Enter). Na primjer:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Izlaz:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Druga sigurnija alternativa getu () je funkcija fgets () koja čita određeni broj znakova. Na primjer:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Izlaz:
Enter your name plz: CarlosMy name is Carlos
Argumenti fgets () su:
- naziv niza,
- broj znakova za čitanje,
- stdin znači čitati sa standardnog ulaza koji je tipkovnica.
Izlaz niza: Ispis / prikaz niza
Standardna funkcija printf koristi se za ispis ili prikaz nizova u C na izlaznom uređaju. Specifikator formata koji se koristi je% s
Primjer,
printf("%s", name);
Izlaz niza vrši se pomoću funkcija fputs () i printf ().
funkcija fputs ()
Fputs () treba ime niza i pokazivač na mjesto na kojem želite prikazati tekst. Za ispis na zaslon koristimo stdout koji se odnosi na standardni izlaz.Na primjer:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Izlaz:
Enter your town: New YorkNew York
stavlja funkciju
Funkcija stavlja se za ispis niza u C na izlaznom uređaju i pomicanje kursora natrag na prvo mjesto. Funkcija stavljanja može se koristiti na sljedeći način,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Sintaksa ove funkcije relativno je jednostavna od ostalih funkcija.
Biblioteka nizova
Standardna knjižnica 'C' nudi razne funkcije za manipulaciju nizovima unutar programa. Te se funkcije nazivaju i upravljačima nizovima. Svi su ti rukovatelji prisutni u datoteci zaglavlja
Funkcija | Svrha |
strlen () | Ova se funkcija koristi za pronalaženje duljine niza. Vraća koliko je znakova prisutno u nizu, isključujući NULL znak. |
strcat (str1, str2) | Ova se funkcija koristi za kombiniranje dva niza zajedno u jedan niz. Dodaje ili spaja str2 na kraj str1 i vraća pokazivač na str1. |
strcmp (str1, str2) | Ova se funkcija koristi za međusobno uspoređivanje dva niza. Vraća 0 ako je str1 jednak str2, manji od 0 ako je str1 |
Uzmimo u obzir program ispod koji prikazuje funkcije knjižnice nizova:
#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;}
Izlaz:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Ostale važne funkcije knjižnice su:
- strncmp (str1, str2, n): vraća 0 ako je prvih n znakova str1 jednako prvim n znakovima str2, manje od 0 ako je str1
str2. - strncpy (str1, str2, n) Ova se funkcija koristi za kopiranje niza iz drugog niza. Kopira prvih n znakova str2 u str1
- strchr (str1, c): vraća pokazivač na prvu pojavu char c u str1 ili NULL ako znak nije pronađen.
- strrchr (str1, c): traži str1 obrnuto i vraća pokazivač na položaj char c u str1, ili NULL ako znak nije pronađen.
- strstr (str1, str2): vraća pokazivač na prvo pojavljivanje str2 u str1 ili NULL ako str2 nije pronađen.
- strncat (str1, str2, n) Dodaje (spaja) prvih n znakova str2 na kraj str1 i vraća pokazivač na str1.
- strlwr (): za pretvaranje niza u mala slova
- strupr (): za pretvaranje niza u velika slova
- strrev (): za preokretanje niza
Pretvaranje niza u broj
U programiranju na jeziku možemo pretvoriti niz numeričkih znakova u numeričku vrijednost kako bismo spriječili pogrešku u vremenu izvođenja. Biblioteka stdio.h sadrži sljedeće funkcije za pretvaranje niza u broj:
- int atoi (str) Označava ASCII kao cijeli broj; pretvara str u ekvivalentnu int vrijednost. Vraća se 0 ako prvi znak nije broj ili se ne nađu brojevi.
- double atof (str) Stoji da ASCII pluta, pretvara str u ekvivalentnu dvostruku vrijednost. 0.0 se vraća ako prvi znak nije broj ili se ne nađu brojevi.
- long int atol (str) Označava ASCII u long int, pretvara str u ekvivalentnu dugu cijelu vrijednost. Vraća se 0 ako prvi znak nije broj ili se ne nađu brojevi.
Sljedeći program pokazuje funkciju atoi ():
#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;}
Izlaz:
Enter a number: 221348you enter 221348
- Deklaracija pokazivača na niz poput char * string = "language" konstanta je i ne može se mijenjati.
Sažetak
- Niz je niz znakova pohranjenih u nizu znakova.
- Niz je tekst zatvoren u dvostruke navodnike.
- Znak kao što je 'd' nije niz i označen je pojedinačnim navodnicima.
- 'C' pruža standardne funkcije knjižnice za manipulaciju nizovima u programu. Nizovni manipulatori pohranjeni su u datoteci zaglavlja
. - Niz se mora deklarirati ili inicijalizirati prije upotrebe u program.
- Postoje različite funkcije ulaznog i izlaznog niza, a svaka od njih ima svoje značajke.
- Ne zaboravite uključiti biblioteku nizova za rad sa svojim funkcijama
- Niz možemo pretvoriti u broj putem atoi (), atof () i atol () koji su vrlo korisni za procese kodiranja i dekodiranja.
- Možemo manipulirati različitim žicama definiranjem niza žica u C.