2011-10-23 3 views
-1

주어진 코드가 부동 소수점 예외를 생성합니다. 아무도이 문제의 원인을 말해 줄 수 있습니까? 주어진 코드 당으로부동 소수점 예외 C 코드

int play(t_env* env, t_pos* pos) 
{ 
    pid_t pid; 
    int  ret; 
    t_data data; 
    int  status; 

    pos->addx = 1; 
    pos->addy = 0; 
    pos->x = 2 + rand() % data.row; 
    pos->y = 2 + rand() % data.col; 
    pid = getpid(); 
    ret = waitpid(WAIT_ANY, &status, WNOHANG); 

    if (ret == -1) 
    { 
      id_print_str("Error during waiting stat"); 
      exit(1); 
    } 
    while (pos->x != data.row) 
    { 
      tputs(tgoto(env->cm, pos->x, pos->y), 1, id_put); 
      id_print_char('1'); 
      sleep(1); 
      pos->x = pos->x + pos->addx; 
      pos->y = pos->y + pos->addy; 

    return (0); 
} 
+3

어떤 문제를 언급하고 있는데 몇 가지 코드가 있습니다. ? – rerun

+0

글쎄, 내가 컴파일 할 때 컴파일 된 프로그램을 실행하면 부동 소수점 예외가 발생한다. – Slrs

+1

그런 다음 디버거에서 실행하여 예외를 던지고있는 행을 파악한다. 게시 한 기능이 원인인지 어떻게 알 수 있습니까? – Praetorian

답변

1

, 나는

pos->x = 2 + rand() % data.row; 
pos->y = 2 + rand() % data.col; 

확실히 그 data.rowdata.col 0이 아닌 꼭 확인, 여기 그것의, 유일하게 가능한 가정합니다. 그렇지 않으면 문제가 다른 곳에서 발생했을 수 있습니다.

+0

아 맞아, 고마워. – Slrs