Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
915.49 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»

Факультет

Факультет № 1.

Направление подготовки / специальность

09.03.01 Информатика и вычислительная техника

Кафедра информатики и вычислительной техники

ФИО студента

Группа студента

,Лабораторная работа № 6

по программированию С

Тема: Строки

Цель работы: знакомство с организацией строк в языке Си, изучение библиотечных функций обработки строк и символов

Вариант 4

1. Дана строка символов до точки. Определить, является ли она палиндромом. (Палиндром слева направо и справа налево читается одинаково, например "Лёша на полке клопа нашёл") Пробелы и знаки препинания, а также регистр букв не учитываются.

2. Дана строка символов. Подсчитать, сколько раз в ней встречается подслово «АВВА».

Ход работы:

1.

2.

Ответы на контрольные вопросы

  1. Способы организации строк:

В C строки представляют собой последовательность символов, завершающуюся нулевым символом (\0).

Существует несколько способов их организации:

• Массивы символов: Строка хранится в массиве символов, где последний элемент - это нуль-терминатор.

• Указатели на символы: Указатель указывает на первый символ строки, и используется для доступа к остальным символам.

  1. Си-строка и массив символов:

Си-строка - Это строка, которая хранится в массиве символов и завершается нулевым символом.

Массив символов: Массив может содержать как строку, так и просто набор символов.

Ключевое различие: Си-строка обязательно содержит нулевой терминатор, а массив символов может его не содержать.

  1. Нуль-терминатор:

Нуль-терминатор (\0) - это специальный символ, который сигнализирует о конце строки. Он позволяет функциям, работающим со строками, точно знать, где строка заканчивается.

4. char *st="Ok" vs. char st[]="Ok": • char *st="Ok": Создается указатель на строку. Строка "Ok" хранится в константной памяти, а указатель st ссылается на нее. • char st[]="Ok": Создается массив символов st, инициализированный строкой "Ok" (включая нуль-терминатор). Строка хранится в памяти, выделенной для массива.

5. Инициализация строки:

• При объявлении: char st[]="Ok";

• С помощью функции strcpy(): strcpy(st, "New string");

• Ввод с клавиатуры: scanf("%s", st); или gets(st);

6. scanf() vs. gets():

• scanf("%s", st);: Считывает строку с клавиатуры до первого пробела.

• gets(st);: Считывает всю строку с клавиатуры, включая пробелы, до нажатия клавиши Enter.

7. gets() vs. fgets():

• gets(st);: Небезопасная функция. Не контролирует размер буфера, что может привести к переполнению.

• fgets(st, MAX_SIZE, stdin);: Безопасная функция. Принимает максимальный размер буфера и считывает строку, не превышающую этот размер.

8. Безопасные функции ввода строк:

• fgets(st, MAX_SIZE, stdin);: Ограничивает количество вводимых символов размером буфера. • getline(): Более современная функция, позволяющая читать строки переменной длины.

9. puts(): Функция puts() выводит на экран строку, включая нуль-терминатор.

10. printf():

Функция printf() предоставляет более гибкий вывод, позволяющий форматировать строки, выводить числа и другие данные.

11. Присваивание строк:

Операция присваивания = не работает с строками напрямую. Например, st = "New string"; не скопирует новую строку.

12. Изменение строки:

Для изменения строки используют функции:

• strcpy(st, "New string"); - копирует новую строку в st.

• strcat(st, "Append"); - добавляет строку к концу st.

• strncpy(st, "Partial copy", 3); - копирует только 3 символа из "Partial copy" в st.

13. Конкатенация строк:

Конкатенация - это соединение двух строк в одну. strcat(st1, st2); - добавляет строку st2 к концу st1.

14. Преобразование строки в число:

• int atoi(char *str); - преобразует строку str в целое число.

• float atof(char *str); - преобразует строку str в число с плавающей точкой.

15. Преобразование числа в строку:

• sprintf(str, "%d", number); - записывает целое число number в строку str.

• sprintf(str, "%f", number); - записывает число с плавающей точкой number в строку str.

16. strtok(): Функция strtok() разбивает строку на токены, используя заданный разделитель. Она возвращает указатель на следующий токен, пока не достигнет конца строки. Пример использования strtok():

Соседние файлы в папке Лаба6