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;
}

Объяснение кода листинга программы

  1. #include Включает в программу файл стандартных функций ввода-вывода.
  2. #include Включает в программу библиотеку для работы с консолью.
  3. #include Включает в программу библиотеку для работы со строками.
  4. #define MAX_ID 1000 Определяет максимальное количество идентификаторов (сообщений), которые могут быть сохранены в массиве.
  5. #define MAX_MESSAGE 10000 Определяет максимальную длину одного сообщения (идентификатора).
  6. int History(char string[]); Объявляет функцию с именем History, которая принимает один аргумент типа char. Эта функция, вероятно, используется для добавления сообщений в историю.
  7. int ReturnMessage(void); Объявляет функцию с именем ReturnMessage, которая не принимает аргументов. Эта функция, вероятно, используется для возврата идентификатора последнего сообщения.
  8. char storage[MAX_ID][MAX_MESSAGE]; Объявляет массив строк с именем storage, который может хранить до MAX_ID сообщений длиной до MAX_MESSAGE.
  9. long int ID; Объявляет переменную с именем ID, которая будет использоваться для отслеживания текущего идентификатора.
  10. long int ID2; Объявляет переменную с именем ID2, которая будет использоваться как счетчик для отслеживания количества сохраненных сообщений.
  11. main() Объявляет основную функцию программы.
  12. while((c=getchar()) != EOF) Начинает цикл, который будет выполняться до тех пор, пока не будет введен символ конца файла (EOF).
  13. if(c == 'w')printf(%s,storage[ReturnMessage()]); Если введен символ 'w', то выводится сообщение с идентификатором, возвращаемым функцией ReturnMessage.
  14. int history(char string[]); Определяет функцию с именем history, которая принимает один аргумент типа char. Эта функция, вероятно, используется для добавления сообщений в историю.
  15. if(ID == MAX_ID)return 1; Если текущий идентификатор равен MAX_ID, функция возвращает 1, возможно, чтобы указать, что массив полон.
  16. strncpy(storage[ID],string,MAX_MESSAGE); Копирует строку 'string' в текущую ячейку массива storage.
  17. ID++; Увеличивает текущий идентификатор на 1.
  18. ID=ID2; Сбрасывает идентификатор обратно к значению ID2, возможно, чтобы начать новый цикл сохранения сообщений.
  19. return 0; Возвращает 0, чтобы указать успешное выполнение функции.
  20. getch(); Получает ввод от пользователя, возможно, чтобы программа могла реагировать на ввод пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы