Bonjour je mets une fonction, dite moi laquelle vous préférez. (Ceci est tiré du livre Métier développeur : Kit de survie)
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
int maFonction(const char * filename, int taille)
{
  FILE * fp = fopen(filename, "rb");
  if(fp == 0)
  {
     printf("file not found");
     return ERR1;
  }
 
  char * buffer = new char[taille];
  if(buffer == 0)
  {
     fclose(fp);
     printf("out of memory");
     return ERR2;
  }
 
  int read = fread(buffer, 1, taille, fp);
  if(read != taille)
  {
     delete []buffer;
     fclose(fp);
     printf("read error");
     return ERR3;
  }
 
  delete []buffer;
  fclose(fp);
  return 0;
}

Voici la deuxième fonction écrite différemment :
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
 
int maFonction(const char * filename, int taille)
{
  int err=0;
  char * buffer = 0;
  FILE * fp = fopen(filename, "rb");
  if(fp == 0) { err=ERR1; goto Exit; }
 
  buffer = new char[taille];
  if(buffer == 0) { err=ERR2; goto Exit; }
 
  int read = fread(buffer, 1, taille, fp);
  if(read != taille) { err=ERR3; goto Exit; }
 
 Exit:
  if (buffer!=0) delete []buffer;
  if (fp!=0) fclose(fp);
  if(err !=0) printf("Error %d", err); 
 return err;
}
J'aimerais donc avoir vos avis sur les 2 et si l'utilisation de goto est utile et si oui dans quel cas.

Merci d'avance.


PS: je sais il y a du C avec du C++, mais ce code n'est pas de moi.