Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Копирование и конкатенация строк.




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 или последний оператор тела функции. Управление при этом возвращается в точку, следующую за точкой вызова функции, а локальные переменные становятся недоступными. При новом вызове функции для локальных переменных память распределяется вновь, и поэтому старые значения локальных переменных теряются.

Прототип.

Если нужно вызвать функцию до ее определения в этом файле или определение функции находится в другом исходном файле, то вызов функции следует предварить ее объявлением, т. е. задать прототип функции, который позволит компилятору выполнить проверку типов аргументов и возвращаемого значения.

Формат прототипа:

<класс памяти> <тип>имя (список формальных параметров);

В отличие от определения функции, в прототипе за заголовком сразу же следует точка с запятой, а тело функции отсутствует. Правила использования остальных элементов формата такие же, как при определении функции. Имена формальных параметров при объявлении функции можно не указывать, а если они указаны, то их область действия распространяется только до конца объявления.

Таким образом, прототип – это явное объявление функции, которое предшествует определению функции.


Поделиться:

Дата добавления: 2015-04-18; просмотров: 60; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты