Хочу сделать меню из 5 элементов на си и ncurses. Делаю так:
#include <curses.h>
#include <stdlib.h>
#include <string.h>
#include <menu.h>
int main() {
ITEM **my_items;
MENU *proctable;
int i, c;
char tempstr[100];
initscr(); cbreak(); noecho(); keypad(stdscr, TRUE);
my_items = malloc(100 * sizeof(ITEM *));
sprintf(tempstr, "%d", 0);
my_items[0] = new_item(tempstr, "...");
sprintf(tempstr, "%d", 1);
my_items[1] = new_item(tempstr, "...");
sprintf(tempstr, "%d", 2);
my_items[2] = new_item(tempstr, "...");
sprintf(tempstr, "%d", 3);
my_items[3] = new_item(tempstr, "...");
sprintf(tempstr, "%d", 4);
my_items[4] = new_item(tempstr, "...");
my_items[5] = (ITEM *)NULL;
proctable = new_menu((ITEM **)my_items);
post_menu(proctable);
refresh();
while ((c = getch()) != KEY_F(1)) {
switch (c) {
case KEY_DOWN: menu_driver(proctable, REQ_DOWN_ITEM); break;
case KEY_UP: menu_driver(proctable, REQ_UP_ITEM); break;
}
}
free_menu(proctable);
endwin();
}
Но похоже, что из-за того, что tempstr передается по ссылке и перезаписывается каждые две строки меню содержит одинаковые элементы. Я хочу это исправить и засунуть в цикл. Как это сделать?