это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
ID (номер) заказа
2588376
Ознакомительный фрагмент работы:
Обзор функций обработки строк
Срока в языке программирования C является массивом элементов типа char, каждый из которых представляет собой число. Тип char числовой, т.к. он занимает байт памяти. Каждому числу сопоставляется определенный символ из таблицы кодировки.
Рассмотрим следующий фрагмент программы:
int a = 66;
char b = 'B';
printf("print as char %c ", b); /* вывод переменной b как символ – B */
printf("print as int %d ", b); /* вывод переменной b как число – 66 */
printf("print as char %c ", a); /* вывод переменной a как символ – B */
printf("print as int %d ", a); /* вывод переменной a как число – 66 */
Выше созданы переменные a и b типов int и char соответственно. В зависимости от используемых спецификаторов будут выводиться число или символ, соответствующий данному числу в таблице кодировки.
Строка в C представляет собой массив типа char, последним элементом которого является символ ‘/0’.
Рассмотрим пример.
char str[15];
str[0] = 'w';
str[1] = 'o';
str[2] = 'r';\
str[3] = 'd';
str[4] = '\0';
/* str[4] = 0; */
printf("%s", str); /* вывод строки str */
В данном примере если 4-му элементу строки не присвоить '\0', то будет произведен вывод всех символов строки заданной длины до первого байта, заполненного нулями.
Чтение строк
Для чтения строки, введенной пользователем, сначала нужно создать буфер, который нужно выбрать заранее, чтоб введенная строка поместилась в нем. Если пользователь будет вводить строку длиннее размера буфера, тогда эти данные запишутся в память и перекроют собой чужие значения.
Рассмотрим следующий пример.
char buff[25];
scanf("%24s", buff);
printf("%s", buff);
В данном примере число введённых символов равно 24, а размер буфера больше на 1 элемент. Это последний элемент строки – терминальный символ.
Рассмотрим пример участка программы, которая будет запрашивать строку у пользователя и будет возвращать длину искомой строки.
В программе строки также можно определить через указатели на символьный тип и как массивы строк.
При объявлении массива символов и присваивании ему строковой константы можно сразу указать количество элементов массива, но при этом данный размер должен быть больше размера строковой константы. Поэтому проще использовать указатели на символьный тип.
В данном случае p – массив, состоящий из трех указателей на символьные строки. Каждая из данных строк является символьным массивом, поэтому имеется четыре указателя на массивы. Указатель p[0] ссылается на первую строку:
*p[0] эквивалентно 'М',
*p[l] эквивалентно 'с'.
Для того, чтобы разместить в оперативной памяти строку символов необходимо выполнить:
выделение блока оперативной памяти под массив;
инициализацию строки.
При выделении памяти под массив необходимо учитывать предполагаемый размер строки:
char *FIO;
FIO = (char*)malloc(20);
scanf("%19s", FIO);
Для того, чтоб ввести строку используем функцию scanf(), при этом вводимая строка не должна превышать 19 символов. Последний символ – символ конца строки.Для ввода строки, содержащей пробелы, используется функция char * gets(char *) или char * gets_s(char *).
Рассмотрим пример использования данной функции.
char str [256];
printf("Ввод адреса: ");
gets(str); // считать строку из стандартного потока ввода
Для того, чтоб осуществить вывод строк также можно использовать функцию int puts (char *s), которая выведет строку s и переведет курсор на следующую строку (в отличие от функции printf()).Рассмотрим функции стандартной библиотеки string.h.
char *strcat(char *str1, char *str2) – позволяет присоединить str2 к str1 и возвращает str1.
Пример использования функции strcat.
char s[70];
strcpy( s, "Данные" );
// добавляем к строке s строку, передаваемую в качестве второго параметра
strcat( s, "строки " );
strcat( s, "присоединены ");
strcat( s, "при " );
strcat( s, "помощи " );
strcat( s, "операции ");
strcat( s, "конкатенации." );
std::cout << str << std::endl;
Программа выведет на экран строку “Данные строки присоединены при помощи операции конкатенации”.
char *strncat(char *str1, char *str2, int count) позволяет присоединить не более count символов str2 к str1, возвращает s1
Пример использования функции strncat.
char s1[45];
char s2[45];
strcpy (s1,"Быть "); // копируем строку "Быть" в s1
strcpy (s2,"или не быть"); // копируем строку "или не" и добавляем к строке s2
strncat (s1, s2, 11); // объединить строки str1 и str2
std::cout << s1 << std::endl;
Программа выведет строку: “Быть или не”.
char *strсpy(char *str1, char *str2) позволяет копировать строку str2 в строку str1, включая символ конца строки, возвращает str1
Рассмотрим пример использования функции strсpy.
char string1[] = "Си-строки";
char string2 [40];
char string3 [80];
strcpy (string2, string1); // копируем строку string1 в string2
strcpy (string3, "скопировано! \n"); // копируем строку во втором параметре в string3
std::cout << " string1: " << string1
<< "\n string2: " << string2
<< "\n string3: " << string3;
char *strncpy(char *str1, char *str2, int count) позволяет копировать не более count символов строки str2 в строку str1, возвращает str1.
Пример использования функции strncpy.
char str1[] = "Быть или не быть";
char str2[10];
strncpy(str2, str1, 8); // скопировать 8 байт строки str1 в строку str2
str2[8] = ''; // добавить в конец строки символ конца строки
std::cout << str2 << std::endl;
int strcmp(char *str1, char *str2) осуществляет сравнение строк str1 и str2, возвращает 0, если str1=str2.
Пример использования функции strcmp.
char word[] = "загадка"; // загаданное слово
char answ [50]; // строка-ответ
do
{
std::cout << "Угадай слово! >> ";
std::cin >> answ;
} while ( strcmp(word, answ) != 0); // цикл работает пока слово //не отгадано
std::cout << "Слово отгадано! \n";
int strncmp(char *str1, char *str2, int count) осуществляет сравнение не более count символов строк str1 и str2, возвращает 0, если начальные count символов строк равны.
Пример использования функции strncmp.
char r[][4] = { "R1D2" , "C2PO" , "R3A6" };
std::cout << "Найдите R2-дроидa астромеханикa... n";
for (int count = 0 ; countr <= 2 ; count++) // цикл по дроидам if ( strncmp( r[count], "R1D**", 3 ) == 0 ) //сравниваем 1-е 3 символа
{
std::cout << "дроид [+_+] >> " << r[count] << "n";
}
int strlen(char *str) возвращает число символов в строке str
Пример использования функции strlen.
char inp[125];
std::cout << "Ввод строки: ";
std::cin >> inp;
std::cout << "Данная строка " << inp << " состоит из " << strlen(inp) << " символов\n";
char *strset(char *str, char c) позволяет заполнить строку str символами c кодом значения c, возвращает указатель на строку str
Пример использования функции strset.
char str1 [120], *res;
/* создает строку, которая состоит из пробелов */
res = strset(str, ' ');
char *strnset(char *str, char c, int count) осуществляет замену первых count символов строки str символами c кодом значения c, возвращает указатель на строку str.
Пример использования функции strnset.
char str1[] = "компьютерные науки";
printf("Искомая строка: %s\n", str1);
// функция заменяет первые 3 символа строки str символом '*'
printf("Модифицированная строка: %s\n", strnset(str, '*', 3));
Итак, мы рассмотрели основные функции для работы с си-строками.
Заключение
Строки в C, как и в других высокоуровневых языках программирования рассматриваются как отдельный тип. Так как язык C – язык системного программирования, то тип string в C как таковой отсутствует, а вместо него используются обычные массивы символов.
В языке С также возможно объявление массивов строк посредством использования двумерных массивов символов.
Все функции библиотеки strings.h, необходимые для работы со строковым типом данных, можно условно разделить на следующие группы:
ввод и вывод строк;
преобразование строк;
обработка строк.
В реферате рассмотрены функции обработки строк, являющихся массивами символов. Рассмотрены их назначение, форма записи, и примеры с их использованием.
В ходе написания работы были приобретены навыки создания программ, использующих обработку си-строк.
Список литературы и интернет-источников
https://learnc.info/c/strings.htmlhttps://prog-cpp.ru/c-string/http://espressocode.top/strnset-function-in-c/Мартынов Н.Н. – Программирование для Windows на C/C++. Том 1 - М.: Бином, 2013. - 528 c.
Стивен Прата – Язык программирования C. Лекции и упражнения - М.: Вильямс, 2015. - 928 c.
Гриффитс Д. – Изучаем программирование на C - М.: Эксмо, 2015. - 624 c.
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Разработка и внедрение ассортимента холодных блюд и закусок с...
Диплом, микробиология
Срок сдачи к 10 мая
Решить 5 заданий по метрологии, стандартизации и сертификации
Контрольная, Метрология, стандартизация и сертификация
Срок сдачи к 24 мая
Вакуумная и плазменная электроника
Тест дистанционно, Вакуумная и плазменная электроника
Срок сдачи к 12 мая
Мне нужна помощь с контрольной работой сегодня в 15:20 Онлайн урок
Контрольная, Геометрия
Срок сдачи к 6 мая
Необходимо решить 3 задачи по физической химии за 1,5 часа 7 мая в 19
Решение задач, Физическая химия
Срок сдачи к 7 мая
Заполните форму и узнайте цену на индивидуальную работу!