КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Копирование и конкатенация строк.strcpy(str1, str2)– копирует (побайтно) содержимое строки str2в строкуstr1. Массив str1должен быть достаточно большим, чтобы в него поместилась строка str2. Если места мало, то компилятор не выдаёт предупреждения или указания на ошибку, выполнение программы не прерывается, но это может привести к порче других данных или самой программы (т.е. неправильной работы программы в дальнейшем ). Синтаксис функции:
char* strcpy(char* str1, const char* str2) str1, str2- указатели на строки. strncpy(str1, str2,num)– копирует num символов из строки str2в строкуstr1. Массив str1должен быть достаточно большим, чтобы в него поместилась строка str2. Если длина str1 меньше длины str2, то происходит урезание символов Синтаксис функции:
char* strncpy(char* str1, const char* str2, size_t num) str1, str2- указатели на строки; num - количество копируемых символов ( тип size_t-безнаковое число). 41. Функции работы со строками : strcmp, ctrlen strlen(S)-определение длины строки. Синтаксис функции:
size_t* strlen( const char* string) В качестве единственного параметра функция принимает указатель на начало строки string, вычисляет количество символов строки и возвращает полученное безнаковое целое число (size_t) . Функция sizeof() возвращает на единицу меньше, чем отводится под массив (нет '\0'). strcmp(str1,str2) -посимвольное сравнение двух строк. Функция производит сравнение, различая прописные и строчные буквы. Синтаксис функции:
char* strcmp(const char* str1, const char* str2) 42. Массив строк: объявление, ввод данных. Объявление массивов строк в языке СИ также возможно. Для этого используются двумерные массивы символов, что имеет следующий синтаксис: char имя[количество][длина]; Первым размером матрицы указывается количество строк в массиве, а вторым – максимальная (с учетом завершающего нуля) длина каждой строки. Например, объявление массива из пяти строк максимальной длиной 30 значащих символов будет иметь вид: char strs[5][31]; При объявлении массивов строк можно производить инициализацию: char имя[количество][длина] = {строковый литерал №1, ... строковый литерал №N}; Число строковых литералов должно быть меньше или равно количеству строк в массиве. Если число строковых литералов меньше размера массива, то все остальные элементы инициализируются пустыми строками. Длина каждого строкового литерала должна быть строго меньше значения длины строки (для записи завершающего нуля). Например: char days[12][10] = { "Январь", "Февраль", "Март", ”Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь","Октябрь", "Ноябрь", "Декабрь" }; При объявлении массивов строк с инициализацией допускается не указывать количество строк в квадратных скобках. В таком случае, количество строк в массиве будет определено автоматически по числу инициализирующих строковых литералов. Например, массив из семи строк: char days[][12] = { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" }; 43.Структуры: определение, шаблон, переменные типа структураСтруктура – это сложный тип данных представляющий собой упорядоченное в памяти множество элементов различного типа. Каждый элемент в структуре имеет свое имя и называется полем. В СИ элементы структуре располагаются последовательно, а размер структуры определяется суммой размеров всех элементов. 44. Структуры: обращение к элементам структуры. Обращаться в языке си ( c ) к элементам структуры можно двумя способами: через операцию-точку, обычная точка, которая в языке Си выполняет операцию доступа к элементам. Вот пример: struct foot_klub { char name[20]; int liga; float ochki; };
int main(){ struct foot_klub a = {"CSKA", 1, 24.5 };
printf ("%d",a.liga); /* вывод значения элемента liga структуры foot_klub */ a.liga = 2; //присваиваем элементу новое значение return 0;} через операцию-стрелку Обозначение: '->'. Различия заключаются в том, что операцию-точку мы используем, когда дело имеем с переменной, а операцию-стрелку - когда дело имеет с указателем на переменную. Вот пример: struct foot_klub *ptr = &a; printf ("%.1f", ptr->ochki); Не забывайте ставить знак взятия адреса (&) перед именем структуры, так как имя структуры не является указателем. Можно обратиться еще вот так: printf ("%.1f", (*ptr).ochki); Но при таком обращении не забывайте брать в скобки (*ptr), т.к. операция доступа имеет более высокий приоритет по сравнению с операцией разыменования. 46. Функции. Определение функции, прототип функции.Функции:Рекурсивные;Чтения и записи;Функции библиотеки ввода-вывода;Функции для работы с файлами;Функции неформативного ввода-вывода;Функции блочного ввода-выводы; Функция – это некоторая логически законченная совокупность операторов языка, которая выполняет определенную конкретную задачу, и может быть вызвана для своего выполнения необходимое количество раз. Основная форма описания функции имеет вид: Тип < имя функции > ( список параметров ) { тело функции }Тип определяет тип значения, которое возвращает функция с помощью оператора return. Если тип не указан, то по умолчанию предполагается, что функция возвращает целое значение ( типа int ). Список параметров состоит из перечня типов и имен параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки в ее описании необходимы в любом случае. В списке параметров для каждого параметра должен быть указан тип. Способ определения функции: Все переменные, объявленные в теле функции без указания класса памяти, по умолчанию имеют класс памяти auto, т. е. являются локальными. При вызове функции локальным переменным отводится память в стеке и производится их явная инициализация. Управление передается первому оператору тела функции и начинается выполнение функции, продолжающееся до тех пор, пока не встретится оператор return или последний оператор тела функции. Управление при этом возвращается в точку, следующую за точкой вызова функции, а локальные переменные становятся недоступными. При новом вызове функции для локальных переменных память распределяется вновь, и поэтому старые значения локальных переменных теряются. Прототип.Если нужно вызвать функцию до ее определения в этом файле или определение функции находится в другом исходном файле, то вызов функции следует предварить ее объявлением, т. е. задать прототип функции, который позволит компилятору выполнить проверку типов аргументов и возвращаемого значения. Формат прототипа: <класс памяти> <тип>имя (список формальных параметров); В отличие от определения функции, в прототипе за заголовком сразу же следует точка с запятой, а тело функции отсутствует. Правила использования остальных элементов формата такие же, как при определении функции. Имена формальных параметров при объявлении функции можно не указывать, а если они указаны, то их область действия распространяется только до конца объявления. Таким образом, прототип – это явное объявление функции, которое предшествует определению функции.
|