Fehlerbehandlung beim Öffnen der Datei
[Frage 1]
Wenn ich eine Datei in eine Funktion öffne, mache ich im Allgemeinen Folgendes:
int read_file (char *filename)
{
FILE *fin;
if ( !(fin = fopen(filename, "r")) )
return 1;
/* ... */
return fclose(fin);
}
int main ()
{
char filename[100];
if ( read_file(filename) )
{
perror(filename);
exit(1);
}
return 0;
}
Allgemein0
Rückgabewert ist für Fehler (oder?), dann kann ich den vorherigen Code ändern in:
int read_file (char *filename)
{
FILE *fin;
if ( !(fin = fopen(filename, "r")) )
return 0;
/* ... */
return !fclose(fin);
}
int main ()
{
char filename[100];
if ( !read_file(filename) )
{
perror(filename);
exit(1);
}
return 0;
}
Aber ich denke, dass der erste Code sauberer ist.
Andere Option ist nur Veränderungreturn 1;
inreturn -1;
(Im ersten Code, den ich geschrieben habe).
Was ist die beste Version?
[Frage 2]
Wenn ich mehr Fehler behandeln muss, korrigiert es einen Code wie diesen?
int read_file (char *filename, int **vet)
{
FILE *fin;
if ( !(fin = fopen(filename, "r")) )
{
perror(filename);
return 1;
}
* vet = malloc (10 * sizeof(int));
if ( *vet == NULL )
{
perror("Memory allocation error.\n");
return 1;
}
/* ... */
return fclose(fin);
}
int main ()
{
char filename[100];
int *vet;
if ( read_file(filename, &vet) )
exit(1);
return 0;
}