Δημοσιεύτηκε: 01 Απρ 2012, 18:11
migf1 έγραψε:Για να το διορθώσεις, θα πρέπει να περάσεις τον file by-reference στην open_file, δηλαδή &fp
Μήπως εννοείς &file;
Αλλά και έτσι δεν δουλεύει:
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MYFILE "/home/ilias/lol.txt"
bool open_file(FILE *fp, char filename[])
{
return ((fp = fopen(filename, "r")) == NULL) ? false : true;
}
int main(void)
{
FILE *file = NULL;
if (! open_file(&file, MYFILE)) {
printf("%s can't be opened\n", MYFILE);
exit(EXIT_FAILURE);
}
fclose(file);
exit(EXIT_SUCCESS);
}
Έτσι περνάω τον file by-reference στην open_file() δηλαδή περνάω την διεύθυνση μνήμης ενός pointer.
Άρα η open_file() περιμένει pointer; Ή pointer σε pointer;
Μπερδεύτηκα...
Edit:
Πρέπει να δουλεύει έτσι. Μισό να το τσεκάρω.
Spoiler: show
Edit2: Ναι, δουλεύει.