Δημοσιεύτηκε: 26 Ιουν 2012, 21:17
από medigeek
Παίζω σιγά-σιγά με τη C: https://github.com/medigeek/isdst/blob/master/isdstd.c

Χρειάζομαι read+write access και να δημιουργήσει το αρχείο ".isdst" αν δεν υπάρχει. Μήπως ξέρει κανείς γιατί το fscanf «δεν δουλεύει» με "w+"; Δοκίμασα και το fgets και άλλα, αλλά το μόνο που δούλευε (νομίζω) ήταν όταν διάβαζα ένα-ένα τους χαρακτήρες.


Μορφοποιημένος Κώδικας: Επιλογή όλων
//Create the file
FILE *fh = fopen(TSFILE, "w");
fclose(fh);

//w+ doesn't work with fscanf
fp = fopen(TSFILE, "r+");
fscanf(fp, "%ld", &lastchk);
rewind(fp);
tlast = localtime(&lastchk);
wasdst = tlast->tm_isdst;


Το «δεν δουλεύει» το έγραψα σε εισαγωγικά, επειδή δουλεύει, δεν πετάει σφάλμα, αλλά μου βγάζει διαφορετικούς, μη αναμενόεμενους αριθμούς:
Μορφοποιημένος Κώδικας: Επιλογή όλων
printf("Retrieved last check from file: %ld DST: %d\n", lastchk, wasdst);


έγραψε:Retrieved last check from file: 140735036461784 DST: 1


Οι αριθμοί των δευτερολέπτων θα έπρεπε να είναι πιο λίγοι, π.χ.
έγραψε:Retrieved last check from file: 1340734900 DST: 1


Edit: Παράξενο, τώρα δεν διαβάζει απ' το αρχείο και εμφανίζει 0 παρόλο που όντως γράφει στο αρχείο.. :P
Edit 2: Διορθώθηκε αλλά ακόμη έμεινα με την απορία για το "w+"