Шта је низ у Ц-у?
Стринг ин Ц је само збирка знакова у линеарној секвенци. 'Ц' увек третира низ појединачних података иако садржи размаке. Појединачни знак се дефинише помоћу представљања са једним наводником. Низ је представљен помоћу двоструких наводника.
Example, "Welcome to the world of programming!"
'Ц' пружа стандардну библиотеку <стринг.х> која садржи многе функције које се могу користити за једноставно обављање сложених операција на жицама у Ц.
У овом упутству ћете научити-
- Како се декларише и иницијализује низ у Ц.
- Унос низа: Прочитајте низ
- Излаз низа: Испис / приказ низа
- функција фпутс ()
- ставља функцију
- Библиотека низова
- Претварање низа у број
Како се декларише и иницијализује низ у Ц.
АЦ Стринг је једноставан низ са цхар-ом као типом података. Језик 'Ц' не подржава директно низ као тип података. Стога, да бисте приказали Стринг у језику Ц, морате да користите низ знакова.
Општа синтакса за декларисање променљиве као низа у Ц је следећа,
char string_variable_name [array_size];
Класична декларација жица може се извршити на следећи начин:
char string_name[string_length] = "string";
Величина низа мора бити дефинисана приликом декларисања променљиве низа Ц јер се користи за израчунавање броја знакова који ће бити сачувани унутар променљиве низа у Ц. Неки валидни примери декларације низа су следећи,
char first_name[15]; //declaration of a string variablechar last_name[15];
Горњи пример представља променљиве низа са величином низа од 15. То значи да дати низ низова Ц може да садржи највише 15 знакова. Индексирање низа започиње од 0, па ће у њему бити смештени знакови са положаја 0-14. Компајлер Ц аутоматски додаје НУЛЛ знак '\ 0' у створени низ знакова.
Проучимо иницијализацију низа у Ц. Следећи пример показује иницијализацију низова у Ц,
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*/
У стринг3 знак НУЛЛ мора се експлицитно додати, а знакови су затворени у појединачне наводнике.
'Ц' такође нам омогућава да иницијализујемо променљиву низа без дефинисања величине низа знакова. То се може учинити на следећи начин,
char first_name[ ] = "NATHAN";
Име низа у Ц делује као показивач јер је у основи низ.
Унос низа: Прочитајте низ
При писању интерактивних програма који од корисника траже унос, Ц пружа функције сцанф (), гетс () и фгетс () за проналажење реда текста који је унео корисник.
Када користимо сцанф () за читање, користимо спецификатор формата „% с“, а да не користимо „&“ за приступ адреси променљиве, јер име низа делује као показивач. На пример:
#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);}
Излаз:
Enter your first name and age:John_Smith 48
Проблем функције сцанф је тај што она никада не чита читаве низове у Ц. Зауставиће поступак читања чим се деси размак, додатак обрасца, вертикални језичак, нови ред или повратак носача. Претпоставимо да дајемо унос као „Водичи за Гуру99“, тада функција сцанф никада неће прочитати читав низ јер се између та два имена појављује размак. Функција сцанф читаће само Гуру99.
Да бисмо прочитали низ који садржи размаке, користимо функцију гетс (). Гетс игнорише размаке. Престаје да чита када дође до нове линије (притиснут је тастер Ентер). На пример:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Излаз:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Друга сигурнија алтернатива гет () је функција фгетс () која чита одређени број знакова. На пример:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Излаз:
Enter your name plz: CarlosMy name is Carlos
Аргументи фгетс () су:
- име низа,
- број знакова за читање,
- стдин значи читати са стандардног улаза који је тастатура.
Излаз низа: Испис / приказ низа
Стандардна функција принтф користи се за штампање или приказивање низова у Ц на излазном уређају. Спецификатор формата који се користи је% с
Пример,
printf("%s", name);
Стринг се врши помоћу функција фпутс () и принтф ().
функција фпутс ()
Фпутс () треба име низа и показивач на место на којем желите да прикажете текст. За испис на екран користимо стдоут који се односи на стандардни излаз. На пример:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Излаз:
Enter your town: New YorkNew York
ставља функцију
Функција ставља се за испис низа у Ц на излазном уређају и враћање курсора на прво место. Функција стављања може се користити на следећи начин,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Синтакса ове функције је релативно једноставна од осталих функција.
Библиотека низова
Стандардна 'Ц' библиотека пружа разне функције за манипулисање низовима унутар програма. Ове функције се такође називају и руковаоци низовима. Сви ови обрађивачи су присутни у датотеци заглавља <стринг.х>.
Функција | Сврха |
стрлен () | Ова функција се користи за проналажење дужине низа. Враћа колико је знакова присутно у низу, искључујући НУЛЛ знак. |
стрцат (стр1, стр2) | Ова функција се користи за комбиновање две жице заједно да би се формирао један низ. Додаје или спаја стр2 на крај стр1 и враћа показивач на стр1. |
стрцмп (стр1, стр2) | Ова функција се користи за упоређивање два низа међусобно. Враћа 0 ако је стр1 једнак стр2, мањи од 0 ако је стр1 <стр2 и већи од 0 ако је стр1> стр2. |
Размотримо програм испод који приказује функције библиотеке стрингова:
#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;}
Излаз:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Остале важне функције библиотеке су:
- стрнцмп (стр1, стр2, н): враћа 0 ако је првих н знакова стр1 једнако првим н знаковима стр2, мање од 0 ако је стр1 <стр2, а веће од 0 ако је стр1> стр2.
- стрнцпи (стр1, стр2, н) Ова функција се користи за копирање низа из другог низа. Копира првих н знакова стр2 у стр1
- стрцхр (стр1, ц): враћа показивач на прву појаву цхар ц у стр1, или НУЛЛ ако карактер није пронађен.
- стррцхр (стр1, ц): претражује стр1 обрнуто и враћа показивач на положај цхар ц у стр1, или НУЛЛ ако карактер није пронађен.
- стрстр (стр1, стр2): враћа показивач на прво појављивање стр2 у стр1, или НУЛЛ ако стр2 није пронађен.
- стрнцат (стр1, стр2, н) Додаје (спаја) првих н знакова стр2 на крај стр1 и враћа показивач на стр1.
- стрлвр (): за претварање низа у мала слова
- струпр (): за претварање низа у велика слова
- стррев (): обрнути низ
Претварање низа у број
У програмирању на језику можемо претворити низ нумеричких знакова у нумеричку вредност како бисмо спречили грешку у току извођења. Библиотека стдио.х садржи следеће функције за претварање низа у број:
- инт атои (стр) Означава АСЦИИ као цео број; претвара стр у еквивалентну инт вредност. Враћа се 0 ако први знак није број или се не нађу бројеви.
- доубле атоф (стр) Означава АСЦИИ да плута, претвара стр у еквивалентну двоструку вредност. 0.0 се враћа ако први знак није број или се не нађу бројеви.
- лонг инт атол (стр) Означава АСЦИИ у лонг инт, претвара стр у еквивалентну дугу целу вредност. Враћа се 0 ако први знак није број или се не нађу бројеви.
Следећи програм демонстрира функцију атои ():
#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;}
Излаз:
Enter a number: 221348you enter 221348
- Декларација показивача на низ као што је цхар * стринг = "језик" је константа и не може се мењати.
Резиме
- Низ је низ знакова који се чувају у низу знакова.
- Низ је текст затворен двоструким наводницима.
- Знак као што је 'д' није низ и он је означен појединачним наводницима.
- 'Ц' пружа стандардне функције библиотеке за манипулисање низовима у програму. Низовни манипулатори се чувају у датотеци заглавља <стринг.х>.
- Низ мора бити декларисан или иницијализован пре употребе у програм.
- Постоје различите функције улазног и излазног низа, а свака од њих има своје карактеристике.
- Не заборавите да укључите библиотеку стрингова да бисте радили са њеним функцијама
- Низ можемо претворити у број помоћу атои (), атоф () и атол () који су врло корисни за процесе кодирања и декодирања.
- Можемо манипулисати различитим жицама дефинишући низ жица у Ц.