[C]Biblioteka Pdcurses - zawieszanie się programu.
Ostatnio zmodyfikowano 2012-11-22 22:02
drago77 Temat założony przez niniejszego użytkownika |
[C]Biblioteka Pdcurses - zawieszanie się programu. » 2012-11-22 19:45:40 Witam. Stworzyłem program, który dodaje adresy stron www i zapisuje je w pliku tekstowym. Stworzyłem menu w pdcurses i niestety ale kiedy chcę uruchomić funkcję dodającą adres program się zawiesza. Dodam, że używam Cod::Blocka, kompilator GNU GCC Compiler. Kod: int main() { char opcja1[ 15 ]; const char * znak = " *"; const short int gora = 1, dol = 2, MENU_POZ_SR = 0; short int kod = 0, ktory = 1; char a[ 10 ]; const char * op1 = "Dodaj adres\n"; const char * op2 = "Wyjdz\n"; initscr(); keypad( stdscr, TRUE ); start_color(); do { clear(); switch( ktory ) { case 1: { attron( A_REVERSE ); mvprintw( 0, MENU_POZ_SR, op1 ); attroff( A_REVERSE ); mvprintw( 1, MENU_POZ_SR, op2 ); break; } case 2: { mvprintw( 0, MENU_POZ_SR, op1 ); attron( A_REVERSE ); mvprintw( 1, MENU_POZ_SR, op2 ); attroff( A_REVERSE ); break; } default: break; } kod = getch(); if(( kod == 258 ) &&( ktory < dol ) ) ktory++; if(( kod == 259 ) &&( ktory > gora ) ) ktory--; if( kod == 260 ) break; if( kod == 261 ) { switch( ktory ) { case 1: { clear(); DodajAdres(); getch(); break; } case 2: { clear(); printw( op2 ); getch(); break; } default: break; } } } while( 1 ); endwin(); return 0;
|
|
Mrovqa |
» 2012-11-22 21:19:10 Mam takie dziwne wrażenie, że nawet nie wiesz co piszesz, że ten kod po prostu skądś ściągnąłeś... Co nam po tym? Daj nam więcej informacji. Co konkretnie działa źle (kod funkcji), jak przejawia się błąd? Próbowałeś przedebuggować kod? |
|
drago77 Temat założony przez niniejszego użytkownika |
» 2012-11-22 21:40:04 Kiedy wywoływałem tę funkcję poza obszarem działania curses wszystko było ok. Zdebugowałem kod i dostałem taki komunikat: Setting breakpoints Debugger name and version: GNU gdb 6.8 Child process PID: 7308 Program received signal SIGSEGV, Segmentation fault. In ?? () (C:\Windows\SysWOW64\guard32.dll) |
|
Mrovqa |
» 2012-11-22 21:52:26 Widać kiepsko debuggowałeś, skoro ten log Ci nic nie dał i skoro nic nie wywnioskowałeś po wartościach zmiennych (których zapewne nawet nie podglądnąłeś). Gdzieś odwołujesz się poza dostępną pamięć - prawdopodobnie do czegoś, co jest poza tablicą. (coś w rodzaju int tab[ 3 ]; tab[ 8 ] = 3; ) |
|
drago77 Temat założony przez niniejszego użytkownika |
» 2012-11-22 22:02:19 Ja myślę że ten błąd jest spowodowany przez bibliotekę curses. Kiedy chciałem dodać conio.h też mi wywalało błędy więc curses jest raczej przyczyną.
Edit: problem rozwiązany, zamieniłem funkcję scanf na scanw :D Temat do zamknięcia. |
|
« 1 » |