Bonjour j'ai un petit probleme dans un code. en gros on doit faire une multiplication en 5 secondes, ensuite une autre si on a juste ou faux ou pas répondu.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <setjmp.h>
 
 
int vrai = 0;
int faux = 0;
int a = 0;
int b = 0;
int res=-1;
 
jmp_buf env;
 
void sig_horloge()
{
  printf("Le temps est écoulé !  Faux !\n");
  res=-1;
  sig++;
  faux++;
  longjmp(env,1);
}
 
void sig_quit()
{
  printf("Vous avez %d bonnes réponses et %d fautes.\n", vrai, faux);
  exit(0);
}
 
int  main()
{
  srand(getpid());  
  while(1)
  {
	setjmp(env);
 
    a = (rand()%10+1);
    b = (rand()%10+1);
 
    printf("\n%d x %d ?\n", a, b);
 
    signal(SIGALRM, sig_horloge);
    alarm(5);
    signal(SIGINT, sig_quit);
 
    scanf("%d", &res);
 
/*
INSTRUCTIONS
 
*/
 
}
Si je ne fais que attendre ,J'arrive à passer une seule fois dans sig_horloge, aprés je n'y arrive plus, ca attend indéfiniment.


EDIT : j'ai trouvé mais alors la, il faut que l'on m'explique : enfet pour que tout marche bien il fait compiler avec : -Wall -pedantic -ansi
Je comprends pas pourquoi.

Merci