History. Как создать массив строк, как его заполнить, и как производить перебор элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, мне нужно реализовать некое подобие хистори. Поясню: есть некое окно, в котором вводится сообщение и при его отправки, тобишь нажатия Enter это сообщение должно поместится в массив и так со всеми отправленными командами. Далее при нажатии допустим стрелки "вверх" или "вниз" выводилась команда из этого массива в это окно. Мне конкретно не ясно как создать массив строк, как его заполнить, и как производить перебор элементов.

Решение задачи: «History. Как создать массив строк, как его заполнить, и как производить перебор элементов»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. #define MAX_ID 1000
  6. #define MAX_MESSAGE 10000
  7.  
  8. int History(char string[]);
  9. int ReturnMessage(void);
  10. char storage[MAX_ID][MAX_MESSAGE];
  11. long int ID;
  12. long int ID2;
  13.  
  14. main()
  15. {
  16. int c;
  17. while((c=getchar()) != EOF)
  18. {                                
  19. if(c == 'w')printf("%s",storage[ReturnMessage()]);    
  20. }
  21. getch();  
  22. }
  23.  
  24.  
  25. int ReturnMessage(void)
  26. {
  27. return ID2--;  
  28. }
  29.  
  30. int history(char string[])
  31. {
  32. if(ID == MAX_ID)return 1;
  33. strncpy(storage[ID],string,MAX_MESSAGE);  
  34. ID++;
  35. ID=ID2;    
  36. return 0;
  37. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы