Similar presentations:
Программирование на языках высокого уровня
1. Программирование на языках высокого уровня
Лаб. работа 13. Строки и модули2. Общие сведения
Требуется написать модуль, реализующий функции для работы состроками, аналогичные функциям из библиотеки string. Выбор
функций осуществляется в соответствии с вариантом по уровню
сложности.
Кроме этого, требуется написать программу, осуществляющую
тест реализованных функций. Тест осуществляется следующим
образом:
1. Требуется ввести строки, являющиеся входными данными
2. Выполнить действие функции над ними
3. Вывести на экран результат выполнения функции
3. Задача A
Реализовать функции• strlen
• strcpy
4. Задача B
Реализовать функции• strlen
• strcpy
• strcat
• strcmp
5. Задача C
Реализовать функции• strlen
• strcpy
• strcat
• strcmp
• strchr
6. Задача D
Реализовать функции• strlen
• strcpy
• strcat
• strcmp
• strchr
• strstr
7. Подсказка
char *strcat(char *dest, const char *src);дописывает строку src в конец dest
char *strncat(char *dest, const char *src, size_t n);
дописывает не более n начальных символов строки src (или
всю src, если её длина меньше) в конец dest
char *strchr(const char *s, int c);
возвращает адрес символа c в строке s, начиная с головы,
или NULL, если строка s не содержит символ c
char *strrchr(const char *s, int c);
возвращает адрес символа c в строке s, начиная с хвоста, или
NULL, если строка s не содержит символ c
int strcmp(const char *, const char *);
лексикографическое сравнение строк (возвращает "0", если
строки одинаковые, положительное, если первая строка
больше, и отрицательное, если меньше)
int strncmp(const char *, const char *, size_t);
лексикографическое сравнение первых n байтов строк
int strcoll(const char *, const char *);
лексикографическое сравнение строк с учетом локали collating
order
char *strcpy(char *toHere, const char *fromHere);
копирует строку из одного места в другое
char *strncpy(char *toHere, const char *fromHere, size_t n);
копирует до n байт строки из одного места в другое
char *strerror(int);
возвращает строковое представление сообщения об ошибке
errno (не потоко-безопасная)
size_t strlen(const char *);
возвращает длину строки
size_t strspn(const char *s, const char *accept);
определяет максимальную длину начальной подстроки,
состоящей исключительно из байтов, перечисленных в accept
size_t strcspn(const char *s, const char *reject);
char *strpbrk(const char *s, const char *accept);
char *strstr(const char *haystack, const char *needle);
определяет максимальную длину начальной подстроки,
состоящей исключительно из байтов, не перечисленных в
reject
находит первое вхождение любого символа, перечисленного в
accept
находит первое вхождение строки needle в haystack
8. Подсказка
Для реализации модуля требуется добавить в проект два файла - .cpp и .hВ .h файл поместить заголовки функций
В .cpp файл поместить реализации функций
В основной программе, использующей созданный модуль, добавить:
#include "mymodule.h“
Где mymodule.h – название заголовочного файла
sum.h
sum.cpp
int sum(int a, int b);
int sum(int a, int b)
{
return a + b;
}
9. Подсказка
Для реализации модуля требуется добавить в проект два файла - .cpp и .hВ .h файл поместить заголовки функций
В .cpp файл поместить реализации функций
В основной программе, использующей созданный модуль, добавить:
#include "mymodule.h“
Где mymodule.h – название заголовочного файла
sum.h
sum.cpp
int sum(int a, int b);
int sum(int a, int b)
{
return a + b;
}
10. Подсказка
Функция strcmp работает следующим образом:Идет в цикле по первой строке, пока одна из них не закончится (пока не
встретится символ с кодом 0). При этом функция вычисляет разность
символов (str2[i] – str1[i]), и если эта разность не равна нулю, завершаем
цикл и через return возвращаем это значение. Если строка закончилась, но
разности всегда нулевые – следовательно, строки равны и функция
возвращает ноль.