History. Как создать массив строк, как его заполнить, и как производить перебор элементов - C (СИ)
Формулировка задачи:
Добрый день, мне нужно реализовать некое подобие хистори. Поясню: есть некое окно, в котором вводится сообщение и при его отправки, тобишь нажатия Enter это сообщение должно поместится в массив и так со всеми отправленными командами. Далее при нажатии допустим стрелки "вверх" или "вниз" выводилась команда из этого массива в это окно.
Мне конкретно не ясно как создать массив строк, как его заполнить, и как производить перебор элементов.
Решение задачи: «History. Как создать массив строк, как его заполнить, и как производить перебор элементов»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #define MAX_ID 1000 #define MAX_MESSAGE 10000 int History(char string[]); int ReturnMessage(void); char storage[MAX_ID][MAX_MESSAGE]; long int ID; long int ID2; main() { int c; while((c=getchar()) != EOF) { if(c == 'w')printf("%s",storage[ReturnMessage()]); } getch(); } int ReturnMessage(void) { return ID2--; } int history(char string[]) { if(ID == MAX_ID)return 1; strncpy(storage[ID],string,MAX_MESSAGE); ID++; ID=ID2; return 0; }
Объяснение кода листинга программы
- #include
Включает в программу файл стандартных функций ввода-вывода. - #include
Включает в программу библиотеку для работы с консолью. - #include
Включает в программу библиотеку для работы со строками. - #define MAX_ID 1000 Определяет максимальное количество идентификаторов (сообщений), которые могут быть сохранены в массиве.
- #define MAX_MESSAGE 10000 Определяет максимальную длину одного сообщения (идентификатора).
- int History(char string[]); Объявляет функцию с именем History, которая принимает один аргумент типа char. Эта функция, вероятно, используется для добавления сообщений в историю.
- int ReturnMessage(void); Объявляет функцию с именем ReturnMessage, которая не принимает аргументов. Эта функция, вероятно, используется для возврата идентификатора последнего сообщения.
- char storage[MAX_ID][MAX_MESSAGE]; Объявляет массив строк с именем storage, который может хранить до MAX_ID сообщений длиной до MAX_MESSAGE.
- long int ID; Объявляет переменную с именем ID, которая будет использоваться для отслеживания текущего идентификатора.
- long int ID2; Объявляет переменную с именем ID2, которая будет использоваться как счетчик для отслеживания количества сохраненных сообщений.
- main() Объявляет основную функцию программы.
- while((c=getchar()) != EOF) Начинает цикл, который будет выполняться до тех пор, пока не будет введен символ конца файла (EOF).
- if(c == 'w')printf(
%s
,storage[ReturnMessage()]); Если введен символ 'w', то выводится сообщение с идентификатором, возвращаемым функцией ReturnMessage. - int history(char string[]); Определяет функцию с именем history, которая принимает один аргумент типа char. Эта функция, вероятно, используется для добавления сообщений в историю.
- if(ID == MAX_ID)return 1; Если текущий идентификатор равен MAX_ID, функция возвращает 1, возможно, чтобы указать, что массив полон.
- strncpy(storage[ID],string,MAX_MESSAGE); Копирует строку 'string' в текущую ячейку массива storage.
- ID++; Увеличивает текущий идентификатор на 1.
- ID=ID2; Сбрасывает идентификатор обратно к значению ID2, возможно, чтобы начать новый цикл сохранения сообщений.
- return 0; Возвращает 0, чтобы указать успешное выполнение функции.
- getch(); Получает ввод от пользователя, возможно, чтобы программа могла реагировать на ввод пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д