Определяне на дължината на низ
Не е задължително дължината на низа да съвпада с дължината на масива. Например, можете да дефинирате име на масив, който съдържа 20 елемента, но да въведете име с по-малко знаци в него. Повечето C и C++ компилатори имат функция strlen(), която ви позволява да определите броя на символите, които действително се съдържат в низ:
gets(name);count = strlen(name);printf("Низ %s съдържа %d символа", име, брой);
Функцията присвоява стойност, отразяваща броя знаци във входния низ (в нашия случай се нарича име) на целочислената променлива count. Без да използвате функцията strlen(), същата процедура може да се изпълни с помощта на следните изрази:
Тук стойността на дължината на низа се използва като индекс в условието на for цикъла и стойността му намалява с всяка итерация на цикъла. Ако низът съдържа 5 знака, цикълът ще се повтори 5 пъти, променяйки стойността на индексната променлива от 5 на 1. Тъй като елементите на такъв масив имат числа от 0 до 4, единица се изважда от стойността на индексната променлива, за да се получи номерът на елемента.
Присвояване на низ
Езикът C не ви позволява директно да присвоявате символи на низ, като използвате изрази като
За тази цел можете да извикате функцията strcpy(), с която повечето компилатори ви позволяват да работите. Синтаксисът на функцията е както следва:
strcpy(име, "Сам"); strcpy(име, име1);
В първия пример знаците "Sam" са присвоени на низова променлива с име name. Във втория пример знаците, които вече са били присвоени на променливата name1, се копират в променливата name.
За да направите същото със собствените си инструкции, ще трябва последователно да присвоите стойности на символи на всеки елемент от масива:
2D масивМислете за това като за таблица с редове и колони. Такъв масив трябва да се дефинира с два индекса, единият от които определя броя на редовете в таблицата, а вторият задава броя на колоните. Следват инструкциите, които дефинират масив с 10 реда и 20 колони, т.е. съдържащ 200 цели променливи:
Мислете за всеки елемент като за цяло число, което заема своето собствено
Фиг. 10. Дефиниране на масив от низовеклетка в таблица 10x20. Елементът table[0][0] е в горния ляв ъгъл на таблицата, а елементът table[0][1] заема съседната клетка вдясно на същия ред.
Когато дефинирате масив от низове, вие също трябва да използвате два индекса. Първият определя максималния брой редове в масива, а вторият определя максималната дължина на всеки ред. Така дефиницията
дефинира десет имена на низови променливи с дължина не повече от 19 символа всяко (фиг. 10).
Ако искате да укажете низове чрез въвеждане на стойностите на отделни знаци, трябва да използвате вложени цикли. Външният цикъл ще повтори 10 пъти, по един за всеки ред, докато вътрешният цикъл трябва да има 19 повторения, за да въведе стойностите на един ред. На фиг. Фигура 11 показва програма, в която стойностите на 10 имена (низови променливи) се въвеждат в масив и след това всички тези 10 реда се показват последователно с помощта на цикъл for.
За да вмъкнете знак в низ, трябва да се използват и двата индекса:
Първият индекс указва номера на желания ред в масива, а вторият указва позицията на знака в низа. Например на фиг. 12 име[0][3] е четвъртият знак (буква m) от първия ред ("Адам") в
Фиг. 11. Програмиране на масив от низове Фиг. 12. Линии и елементинизов масивмасив от имена. За да изведете целия ред на екрана, ви е необходим само един индекс, указващ номера на реда:
За щастие, C и C++ ви позволяват да въведете целия низ като цяло, като използвате само един цикъл, итериращ веднъж за низ от масив:
не намери ли това, което търсиш? Използвайте търсачката: