bonjour
j'ai un programme que je compile sur borland 5.01
et j'ai un warning je sais pas pk.
le compilo me dit que p n'est jamais utilisé dans la fonction fusion.
voilà le programme complet :
si je met tout au début, "int *p;" alors je n'ai pas de warning.
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 int* fusion(int A[],int B[]) { int i,j,k,L=N+M; int *p=NULL; p=(int*)malloc(L*sizeof(int)); if (!p) //équivalent à if (p==NULL) {return(p);} for(i=0,j=0,k=0;i<N,j<M,k<L;k++)// si une des 3 conditions n'est pas vérifiée { // alors sortie de la boucle if (A[i]<=B[j]) // (c'est dans le cas où on aurait vidé un tableau avant) { p[k]=A[i]; printf ("(1)k=%d,i=%d,A[i]=%d, B[j]=%d\n",k,i,A[i], B[j]); i++; } else { p[k]=B[j]; printf ("(2)k=%d,j=%d,B[j]=%d\n",k,j,B[j]); j++; } if (i==N) while (++k<L) { p[k]=B[j]; printf ("(3)k=%d,j=%d,B[j]=%d\n",k,j,B[j]); j++; } else if (j==M) while (++k<L) { p[k]=A[i]; printf ("(4)k=%d,i=%d,A[i]=%d\n",k,i,A[i]); i++; } } return(p); }
j'ai lu (dans mon cours) qu'il était préférable de faire "int *p=NULL" ça évite que le pointeur pointe n'importe où.
Donc j'aimerai savoir si c une erreur de faire int*p=NULL ? le warning n'est pas justifié il me semble.
ensuite j'aimerai demander, pas dans ce programe, mais doit on faire avant ou après les scanf, les stdin(fflush) et le flushall (quelle différence entre les 22, je comprend pas très bien)?
merci
Merci
Partager