2013-12-07 2 views
0

Я использую PDCURSES в Windows 7, и моя программа перестает работать в начале. Я заметил, что ошибка была сделана путем назначения значения целому в строке: 41. К сожалению, я понятия не имею, почему. Я пишу в блоках кода C. Буду признателен, если кто-нибудь сможет мне помочь. Error messagePDCURSES присваивать значение целочисленной ошибке ошибки

 #include <curses.h> 
#include <time.h> 
#include <string.h> 
#include <stdlib.h> 
#include <stdio.h> 
#define ILOSC_NAZW 5 
#define false 0 
#define true 1 

WINDOW * createwin(int height,int width,int starty,int startx); 
void uaktualnij(WINDOW*left,char *nazwa); 
void wyswietl_nazwy(WINDOW *right,char **losowe_nazwy); 

int poprawnie=0,blednie=0; 
int main() 
{ 
    char *losowe_nazwy[ILOSC_NAZW]={"JACK","TOM","KEN","JESSY","ANDRIEJ"}; 
char str[20]; 
int c,startx,starty,height,width; 

WINDOW *right,*left,*console; 
initscr(); 

refresh(); 

startx=0,starty=0,height=LINES/2,width=COLS/2; 
left=createwin(height,width,starty,startx); 
startx=COLS/2; 
right=createwin(height,width,starty,startx); 
startx=0; 
starty=LINES/2; 
width=COLS; 
console=createwin(height,width,starty,startx); 
getmaxyx(right,starty,startx); 
uaktualnij(right,NULL); 
mvwprintw(left,starty/2-starty/4,startx/2-strlen("PODAJ NAZWE UZYTKOWNIKA")/2,"PODAJ NAZWE UZYTKOWNIKA"); 
wrefresh(left); 
wyswietl_nazwy(left,losowe_nazwy); 


c=0; // assigning value make error 


getmaxyx(console,starty,startx); 
wmove(console,starty-2,2); 
memset(str,0,sizeof *str); 
wclear(console); 
wborder(console,0,0,0,0,0,0,0,0); 
wrefresh(console); 

getch(); 
endwin(); 
return 0; 

} 
WINDOW * createwin(int height,int width,int starty,int startx){ 
WINDOW *mywin=newwin(height,width,starty,startx); 
box(mywin,0,0); 
wrefresh(mywin); 
return mywin; 
} 
void czekaj(double sec){ 
clock_t koniec=clock()+sec*CLOCKS_PER_SEC; 
while(clock()<koniec)continue; 
} 
void wyswietl_nazwy(WINDOW *right,char **losowe_nazwy){ 
int i=ILOSC_NAZW; 
int rstartx,rstarty; 
getmaxyx(right,rstarty,rstartx); 
while(i>=0) 
    { 

    mvwprintw(right,rstarty/2-rstarty/4+2,rstartx/2-strlen(losowe_nazwy[i])/2,"%s",losowe_nazwy[i]); 
    wrefresh(right); 
    czekaj(0.2); 
    wmove(right,rstarty/2-rstarty/4+2,rstartx/2-strlen(losowe_nazwy[i])); 
    wclrtoeol(right); 
    mvwaddch(right,rstarty/2-rstarty/4+2,rstartx-1,ACS_VLINE); 
    wrefresh(right); 
    i--; 
} 
} 

void uaktualnij(WINDOW*left,char *nazwa){ 
    int startx,starty; 
wclear(left); 
wborder(left,0,0,0,0,0,0,0,0); 
getyx(left,starty,startx); 
mvwprintw(left,starty+1,startx+1,"Poprawnie: %i",poprawnie); 
mvwprintw(left,starty+2,startx+1,"Blednie: %i",blednie); 
if(nazwa!=NULL) 
mvwprintw(left,starty+3,startx+1,"Wproawadzona nazwa uzytkowanika: %s",nazwa); 
wrefresh(left); 
} 
+0

В целом при размещении вопроса, подобного этому, очень полезно указать, какой компилятор вы используете. Экранный снимок или копия сообщения об ошибке также очень полезны. Добро пожаловать в SO. – EvilTeach

ответ

0

Поскольку PDCurses написан на С, я предполагаю, что вы компилируете в С.

Подведите

int c; 

чуть ниже линии

char *losowe_nazwy[ILOSC_NAZW]={"JACK","TOM","KEN","JESSY","ANDRIEJ"}; 
int c; 

Язык C предполагает, что эти определения будут находиться в верхняя часть функции.

+0

Вы правы, я пишу на C. Я переместил все определения в начало функций, но никаких улучшений нет. Все тот же результат. – whiteNinja

+0

Скомпилирует ли он сейчас? Если вы запустите его, то какая ошибка? – EvilTeach

+0

Он компилируется без каких-либо ошибок или предупреждений. Это довольно странно, потому что сегодня я запускал компьютер, и он работает нормально. – whiteNinja