/
bvs22
/
eltex
Обзор
Документация
Войти
/
bvs22
/
eltex
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
3-pointer*/2ex.c
123 строки
2 KB
bvs22
create 3-pointer*/3ex.c
13 ноя 2024, 18:27
13 ноя 2024, 18:27
650a06c
Код
Авторство
О чём код?
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> void add_new_str(char **arr, unsigned int *current_size, unsigned int *max_size) { char new_str[100]; printf("Введите новую строку: "); scanf("%s", new_str); printf("\n"); if(*current_size >= *max_size) { *max_size *= 2; *arr = realloc(*arr, sizeof(char*) * (*max_size)); if(*arr == NULL) { printf("Ошибка выделения памяти.\n"); exit(1); } } arr[*current_size] = malloc(sizeof(char) * (strlen(new_str) + 1)); if (*arr == NULL) { printf("Ошибка выделения памяти.\n"); exit(1); } strcpy(arr[*current_size], new_str); (*current_size)++; } void delete_str(char **arr, unsigned int *current_size) { unsigned int index = 0; printf("Введите индекс удаляемой строки: "); scanf("%d", &index); printf("\n"); if (index >= *current_size) { printf("Неверный индекс.\n\n"); return; } free(arr[index]); for (unsigned int i = index; i < *current_size - 1; i++) { arr[i] = arr[i + 1]; } (*current_size)--; } void print_str(char **arr, unsigned int current_size) { if (current_size == 0) { printf("Нет строк для вывода.\n\n"); return; } printf("\nСписок строк:\n"); for (unsigned int i = 0; i < current_size; i++) { printf("%u) %s\n", i, arr[i]); } printf("\n"); } int main() { char **arr; unsigned int opertion = 0; unsigned int max_size = 2; unsigned int current_size = 0; arr = malloc(sizeof(char*) * max_size); { if(arr == NULL) { printf("Ошибка выделения памяти.\n"); exit(1); } } while(opertion != 4) { printf("1 - Новая строка.\n2 - Удаление строки по индексу.\n3 - Вывод всех строк.\n4 - Выход.\nВыберете операцию: "); scanf("%d", &opertion); switch (opertion) { case 1: add_new_str(arr, ¤t_size, &max_size); break; case 2: delete_str(arr, ¤t_size); break; case 3: print_str(arr, current_size); break; case 4: for (unsigned int i = 0; i < current_size; i++) { free(arr[i]); } free(arr); printf("Выход из программы.\n"); return 0; default: printf("Неверная операция.\n\n"); break; } } return 0; }