- •Предисловие
- •Алфавит языка
- •Служебные слова
- •Константы
- •Комментарии
- •Переменные
- •Int I,j,k; //переменные I, j, k – целого типа
- •Математические функции
- •Выражения
- •Выражения целого типа
- •Примеры записи выражений целого типа:
- •Примеры вычислений выражений целого типа:
- •Выражения вещественного типа
- •Примеры записи выражений вещественного типа
- •Примеры вычислений выражений вещественного типа:
- •Операторы присваивания
- •Примеры записи операторов присваивания:
- •Ввод и вывод данных
- •Стандартный ввод-вывод
- •Посимвольный ввод-вывод
- •Ввод-вывод строк
- •Форматированный вывод
- •Форматированный ввод
- •Scanf(“формат”, аргументы);
- •Int age, rost;
- •Vasja Pupkin
- •Vasja Pupkin
- •Структура программы
- •Void main()
- •Int main()
- •Int age, rost;
- •Директивы препроцессора
- •Включение файлов
- •Int main()
- •Int age, rost;
- •Int main()
- •Int age, rost;
- •Подстановка имен
- •Макросы
- •Структуры данных
- •Массивы
- •Int vect[5];
- •Int vect[count];
- •Vect[0] vect[1] vect[2] vect[3] vect[4]
- •Int main()
- •Int temp;
- •Int matr[row][col];
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Int main()
- •Int c, y1, y2, kl, day, month, year;
- •Часто встречающиеся ошибки программирования:
- •Int main()
- •Переключатель
- •Int main()
- •Int month;
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Int main()
- •Программа
- •Int main()
- •Программа
- •Int main()
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Int main()
- •Int main()
- •Программа
- •Int main()
- •Int main()
- •Int main()
- •Int month;
- •Циклы с параметром
- •Действия цикла:
- •Int main()
- •Int top, bottom;
- •Int main()
- •Int num, sum, factor;
- •Int main()
- •Int main()
- •If (number % 3)
- •Int main()
- •Int main()
- •Int I, m, vector_min, vector_max, temp;
- •Int vector[n];
- •Int main()
- •Int vector_min, vector_max, temp;
- •Int vector[n];
- •Функции
- •Int summa(int a, int b)
- •Int summa(int a, int b)
- •Void swap(int a, int b)
- •Int temp;
- •Int top, bottom, temp;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Void quick_sort(int left, int right, int vector[])
- •Int I, last;
- •Void swap(int I, int j, int vector[])
- •Int temp;
- •Особенности рекурсии:
- •Адреса и указатели
- •Операции над указателями
- •Указатели и массивы
- •Int mass[5];
- •Int trio[5][2][3];
- •Указатели и функции
- •Int main()
- •Указатели и строки
- •Функции для работы со строками
- •Vtorokursnik
- •Vtorokursnik
- •Itoa(I, str, 16);
- •Текстовые файлы
- •Int vector[k];
- •Vector_1:
- •Vector_2:
- •Int ocenka;
- •Imja: Vasilij
- •Imja: Ivan
- •Int ocenka;
- •Бинарные файлы
Функции для работы со строками
В Си имеется обширная библиотека функций для работы со строками, которая вызывается директивой препроцессора:
#include <string.h>
Рассмотрим функции, входящие в эту библиотеку.
Определение текущей длины строки: int strlen(строка) – возвращает целое число без знака:
char *str;
str = ”jasyk C”;
unsigned int k;
k = strlen(str);
Переменная k примет значение 7.
Первое вхождение одного из символов строки - второго аргумента в строку - первый аргумент: char *strpbrk(строка_1, строка_2) – возвращает указатель на строку:
char str_1[10]=”jasyk C”;
char str_2[10]=”ky”;
char *str;
str = strpbrk(str_1, str_2); // str – обязательно указатель!
printf(“\n%s”, str);
На экране появится сообщение:
yk C
Первое вхождение символа - второго аргумента в строку - первый аргумент: char *strchr(строка, символ) – возвращает указатель на строку:
char str_1[50]="programmisty-molodcy";
char c =’m’;
char *str;
str = strchr(str_1, c);
printf(“\n%s”, str);
На экране появится сообщение:
mmisty-molodcy
Если символ не найден, то функция возвращает значение NULL.
Последнее вхождение символа - второго аргумента в строку - первый аргумент: char *strrchr(строка, символ) – возвращает указатель на строку:
char str_1[50]="programmisty-molodcy, ljubjat nas krasavicy";
char c ='s';
char *str;
str = strrchr(str_1, c);
printf(“\n%s”, str);
На экране появится сообщение:
savicy
Если символ не найден, то функция возвращает значение NULL.
Первое вхождение заданной последовательности символов строки - второго аргумента в строку - первый аргумент: char *strstr(строка_1, строка_2) – возвращает указатель на строку:
char str_1[50]="programmisty-molodcy, ljubjat nas krasavicy";
char str_2[10]=”ljub”;
char *str;
str = strstr(str_1, str_2);
printf(“\n%s”, str);
На экране появится сообщение:
ljubjat nas krasavicy
Если последовательность не найдена, то функция возвращает значение NULL.
Соединение строки - первого аргумента и строки - второго аргумента: char *strcat(строка_1, строка_2) – возвращает указатель на строку:
char str_1[50]="programmisty-molodcy,";
char str_2[50]=” ljubjat nas krasavicy";
char *str;
str = strcat(str_1, str_2);
printf(“\n%s”, str);
На экране появится сообщение:
programmisty-molodcy, ljubjat nas krasavicy
Сравнение двух строк: строки - первого аргумента и строки - второго аргумента: int strcmp(строка_1, строка_2) – возвращает
-1, если строка_1 < строка_2,
0, если строка_1 = строка_2,
1, если строка_1 > строка_2
Сравнение производится посимвольно слева направо до первых несовпадающих символов строк.
char str_1[20]=”programmist”;
char str_2[20]=”programmirovanie”;
int k;
k = strcmp(str_1, str_2);
Переменная k примет значение 1, так как первая строка больше (не длиннее!) второй.
Переворот строки: char *strrev(строка) – возвращает указатель на строку:
char str_1[10]=”programma”;
char *str;
str = strrev(str_1);
printf(“\n%s”, str);
На экране появится сообщение:
ammargorp
Копирование одной строки в другую: char *strncpy(строка_1, строка_2, k) – заменяет k первых символов строки_1 на k первых символов строки_2 и возвращает указатель на строку:
char str_1[50]="pervokursnik";
char str_2[50]="vtoroj kurs";
char *str;
int k=5;
str = strncpy(str_1, str_2, k);
printf(“\n%s”, str);
На экране появится сообщение: