PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] NCurses und wprintw()



Giuly
13-11-2003, 03:29
Hi,
ich hab ein Problem mit wprintw(). Ich bekomme immer "Speicherzugriffsfehler" zu hören, wenn ich eine Taste drücke.
Source:

#include <stdio.h>
#include <ncurses.h>
#include <panel.h>

int main(void)
{
WINDOW *win1, *winok[3];
PANEL *panel1, *panelok[3];
char command;
void ende();

initscr();
noecho();
cbreak();

if(has_colors){
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_BLUE, COLOR_BLACK);
init_pair(3, COLOR_WHITE, COLOR_BLUE);
}

win1=newwin(0,0,0,0);
winok[1]=newwin(5,30,LINES/2-2, COLS/2-15);
winok[2]=newwin(5,30,LINES/2-2, COLS/2-15);

panel1=new_panel(win1);
panelok[1]=new_panel(winok[1]);
panelok[2]=new_panel(winok[2]);

wbkgd(win1, COLOR_PAIR(3));

mvwaddstr(win1,1,1,"blah");
mvwaddstr(winok[1],1,1, "ok");
mvwaddstr(winok[2],1,1, "ka");

wattrset(winok[1], COLOR_PAIR(1));
wattrset(winok[2], COLOR_PAIR(1));

wborder(win1,0,0,0,0,0,0,0,0);
wborder(winok[1],0,0,0,0,0,0,0,0);
wborder(winok[2],0,0,0,0,0,0,0,0);



show_panel(panel1);
update_panels();
doupdate();

show_panel(panelok[1]);
update_panels();
doupdate();

//move(0,1);
wmove(winok[1],0,1);

for(;;){
command=getch();
/*
if(command=='q' || command=='Q') {
endwin();
exit(0);
}

if(command=='t' || command=='T') {
show_panel(panelok[1]);
hide_panel(panelok[2]);
}

if(command=='z' || command=='Z') {
hide_panel(panelok[1]);
show_panel(panelok[2]);
}
*/
wprintw(winok[1], "%s", command);

update_panels();
doupdate();
}

endwin();
}

gdb sagt mir:
Program received signal SIGSEGV, Segmentation fault. │0x400ea453 in strlen () from /lib/libc.so.6 │(gdb)