Структура на програма в C - Част 9 - низове от символи, C-string

Подобни документи
Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Структура на програма в C - Част 2 - типове, функции

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Програмиране на Паскал

Black and White

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

Системи за управление на версии - Работа с git

Маисви

Lush Green

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Упражнение 3. Основни елементи на РНР синтаксис на езика, константи, променливи, изрази, оператори... Показване на текст в браузъра Да се създаде една

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

5

Потоци (Rev: 1.1)

C++

ИЗИСКВАНИЯ ЗА ДОКЛАДИТЕ А. ОБЩИ ИЗИСКВАНИЯ І. Докладът трябва да е написан на компютърна програма Microsoft Word. ІІ. Файлът да бъде записан като *.do

Виртуални функции

MSDOS1

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

Университет - библиотека - образование и дигиталният достъп University - Library - Education and Digital Access

Графика и Презентации - Стандартизация на графичният Вход/Изход

Формуляри

Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

В компютърните системи информацията се съхранява само в двоичен код, използваните символи при съставяне на даден текст трябва да се представят като ко

-

Eclipse TUES 1 Кирил TUES

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н

Slide 1

ПРИЛОЖЕНИЕ 1 Неразделна част от Заповед рд / г. ОПИС на разпределените масиви за ползване и включените в тях имоти за стопанската 2018/

Машинно обучение Лабораторно упражнение 3 Работа с функции, файлове и графики 1. Допълнителни сведения за функции 1.1. Стойности на аргументите по под

Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари

ОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за

Препис:

Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 1 / 10

Съдържание 1 Проблем 2 Низове от символи. C string И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 2 / 10

Съдържание 1 Проблем 2 Низове от символи. C string И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 3 / 10

Проблем При обработка на масиви чрез функции, (почти) винаги е нужно да се предава големината на масива в елементи заедно с указател към първия елемент от масива Това създава неудобство за програмиста, тъй като непрекъснато трябва да се предава допълнителен аргумент /* prints up to 'size' elements in the array pointed by 'a' */ int print_array(int *a, int size) { //... /* copies the array pointed by 'a' into 'b' element by element */ int copy_array(int *a, int size_a, int *b, int size_b) { //... int main() { int a[4] = {10, 20, 30, 40; int b[5] = {0; print_array(a, 4); copy_array(a, 4, b, 5); print_array(b, 5); // wishing for: print_array(a); copy_array(a, b); print_array(b); И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 4 / 10

Обработване на текст При обработване на текст в C, текста най-често се запазва в масив от тип char, като поредният елемент от масива съдържа кода от ASCII таблицата на поредния символ от текста int capitalize_and_print(char *t, int size) { int i = 0; if (t[0] >= 'a' && t[0] <= 'z') { t[0] = t[i] - ('a' - 'A'); for (i = 0; i < size; i++) { printf("%c", t[i]); int main() { char text[7] = {'h', 'e', 'l', 'l', 'o', '!', '\n'; capitalize_and_print(text, 7); Фрагмент 1: Пример за обработка на текст И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 5 / 10

Съдържание 1 Проблем 2 Низове от символи. C string И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 6 / 10

Низове от символи. C string Когато се работи със текстове, проблемът може да бъде решен по следния начин: ASCII таблицата съдържа специален символ наречен нулев символ (null character), който има код 0. Той няма графично представяне и съответно никога не може да бъде срещнат в текст В C е прието с нулев символ да се означава края на текста в един масив, което помага за обработването на текста в масива, тъй като масива може да бъде обработван докато не се стигне до нулевия символ Масив с елементи от тип char, съдържащ някъде в себе си кода на нулевия символ, се казва че съдържа C string - т.е. последователност (низ) от символи завършваща с 0 В C символната константа, която съответства на кода на нулевия символ в ASCII таблицата, е \0 И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 7 / 10

Низове от символи. C string int capitalize_and_print(char *t) { int i = 0; if (t[0] >= 'a' && t[0] <= 'z') { t[0] = t[i] - ('a' - 'A'); for (i = 0; t[i]!= '\0'; i++) { printf("%c", t[i]); int main() { char text[] = {'h', 'e', 'l', 'l', 'o', '!', '\n', '\0'; char text2[] = {'b', 'y', 'e', '!', '\n', '\0'; capitalize_and_print(text); capitalize_and_print(text2); Фрагмент 2: Пример за обработка на текст записан като C string И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 8 / 10

Низове от символи. C string Езикът C има специална поддръжка за C string-ове, която цели да улесни използването им При инициализация на масив с елементи от тип char е възможно да се използва низов литерал, като съответно поредният елемент от масива се инициализира с кода на поредния символ от низовия литерал Въпреки че не се изписва, низовият литерал винаги съдържа като последен символ нулевият символ - \0 int main() { char a[] = {'h', 'e', 'l', 'l', 'o', '!', '\n', '\0'; char b[] = "hello!\n"; /* 'b' is initialized in the same way as 'a', both 'a' and 'b' are C strings because they contain '\0' */ Фрагмент 3: Стандартна инициализация на масив от символи и еквивалентно инициализиране с низов литерал И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 9 / 10

Низове от символи. C string Когато се използва извън инициализация на масив, низовият литерал се замества със стойност, която е адреса на първият елемент от масив, съдържащ символите от низовия литерал int print(char *str) { int i = 0; for (i = 0; str[i]!= '\0'; i++) printf("%c", str[i]); return 0; int main() { char a[] = "hello!\n"; char *ptr = "hello!\n"; print(a); // prints 'hello\n' print(ptr); // prints 'hello\n' print("hello!\n"); // prints 'hello\n' Фрагмент 4: Употреба на низов литерал в и извън инициализация на масив И. Георгиев, Х. Иванов, Х. Стефанов (ELSYS)Структура на програма в C ELSYS 10 / 10