Show Posts
|
Pages: [1] 2 3 ... 12
|
2
|
Χαλαρή συζήτηση - κουβεντούλα / Αθλητικές Διοργανώσεις / Re: NBA Playoffs-2008
|
on: May 21, 2008, 01:28:18 am
|
Οι Celtics πρέπει να δείξουν χαρακτήρα και να βελτιώσουν σημαντικά την επίθεση τους.Τα παιχνίδια με τους Pistons θα έχουν πολύ ξύλο,αφού και οι δύο ομάδες βασίζονται στην σκληρή άμυνα.Πάντως πρωταθλητές βλεπώ τους Lakers,γιατί και ο Kobe είναι πεινασμένος και έχει και συμπαίκτες που μπορούν να κάνουν την διαφορά(Gasol,Odom,Fischer,Walton). Πάντως όσον αφορά τους Hornets,χάσαν άδικα το έκτο παιχνίδι αφού σφύριξαν κάτι τρελλά φάουλ σε Paul και West σε ένα διάστημα μερικών λεπτών,αλλά στο χτεσινό παιχνίδι οι Spurs παίξανε σαν πρωταθλητές και άξιζαν την νίκη.
|
|
|
3
|
Μετά τη Σχολή / Στον Στρατό / Re: Θητεια
|
on: May 16, 2008, 20:30:05 pm
|
Δεν είμαι σίγουρος, αλλά νομίζω ότι πρέπει να γίνει διακοπή της αναβολής,αλλιώς μπορεί όταν παρουσιαστείς να έχεις κυρώσεις(αφού θα φαίνεται στα χαρτιά ότι έχεις τελειώσει το πανεπιστήμιο πολύ νωρίτερα σε σχέση με το χαρτί της αναβολής),όπως ανέφερε και πιο πάνω ο ADSF_.
|
|
|
4
|
Μετά τη Σχολή / Στον Στρατό / Re: Θητεια
|
on: May 14, 2008, 08:14:12 am
|
Το βύσμα είναι το πασπαρτού της χώρας!
Εδώ τελευταία μαθαίνω ότι το καλύτερο βύσμα που κυκλοφορεί είναι.. γνωστός που έχει βενζινάδικο!
+1 
|
|
|
7
|
Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα / Προγραμματισμός (C, VB, Delphi, PHP, ASP...) / Re: Χαρακτήρας EOF μέσα σε αρχείο
|
on: April 30, 2008, 21:21:26 pm
|
Ο αριθμός των bytes στο αρχείο ισούται με datanum. Ο sc είναι pointer σε char, ο fp είναι pointer στο αρχείο που διαβάζω και ο si είναι πίνακας int. Αγνοήστε το if block, το θέμα είναι ότι όταν βάζω breakpoint αμέσως μετά το if (feof(fp))printf("%c",(*sc)) αρχίζει να μου εκτυπώνει "G" μετά από λίγες εκτελέσεις του βρόχου ενώ το αρχείο είναι τεράστιο στην πραγματικότητα. Το G είναι το τελευταίο γράμμα πριν το SUB, οπότε νομίζω ότι εκεί γίνεται η ζημιά.
for (i=0;i<datanum;i++){ fscanf(fp,"%c",sc); if (feof(fp))printf("%c",(*sc)); if (i%2) si[i/2]+=(int)16*(*sc); else si[i/2]=(int)(*sc); }
Πάντως αφού ξέρεις τον ακριβή αριθμό Bytes του αρχείου (στη μεταβλητή datanum) δεν χρειάζεται να χρησιμοποιήσεις το eof . Όταν τελειώσει ο βρόχος for θα έχεις φτάσει και στο τέλος του αρχείου . Δηλαδή μήπως γίνεται έτσι: for (i=0;i<datanum;i++){ fscanf(fp,"%c",sc); if (i%2) si[i/2]+=(int)16*(*sc); else si[i/2]=(int)(*sc); } printf("%c",(*sc)); Δηλαδή βάζεις την printf όταν τελειώσει ο βρόχος .
|
|
|
8
|
Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα / Προγραμματισμός (C, VB, Delphi, PHP, ASP...) / Re: Χαρακτήρας EOF μέσα σε αρχείο
|
on: April 30, 2008, 21:14:52 pm
|
από ότι ξέρω εγώ η τιμή του eof μπορεί να υπάρχει μέσα σε ένα αρχείο και στη μέση. Για παράδειγμα αν έχεις ανοίξει ένα αρχείο στο 2αδικό και θες να γράψεις τη τιμή που τυχαίνει να αντιστοιχεί στο eof τι θα γίνει? Δε θα τη γράψεις?
Η λύση είναι απλή. Υπάρχει ο ESC (escape character) που ουσιαστικά δηλώνει ότι ο επόμενος χαρακτήρας ΔΕΝ είναι ειδικός. Οπότε όταν θες να γράψεις το EOF απλά γράφεις πρώτα ESC και μετά EOF. Από όσο γνωρίζω όταν έχεις ένα δυαδικό stream αν του πείς να γράψει το χαρακτήρα που αντιστοιχεί στο EOF η C θα γράψει αυτόματα ESC+EOF δηλώνοντας ότι όντως έγραψες τη τιμή του EOF και δε δηλώνεις το τέλος του αρχείου. Το πραγματικό EOF γράφεται όταν κλείνεις το αρχείο.
Ομοίως στην ανάγνωση από ότι ξέρω (αν έχεις δυαδικό stream) αν η C συναντήσει το ESC+EOF τότε σου επιστρέφει τη τιμή του EOF και η συνάρτηση feof() δίνει (ορθά) false.
Βέβαια αν έχεις text stream προφανώς η συνάρτηση feof θα σου δώσει true καθώς δε μπορεί να αναγνωρίσει το συνδυασμό ESC+EOF αλλά τους βλέπει σα διαφορετικούς χαρακτήρες.
Οπότε το ερώτημα είναι πως γράφηκε το αρχείο (binary ή text) αλλά κυρίως πως το άνοιξες. Από ότι φαίνεται το αρχείο γράφηκε σε binary mode και εσύ το ανοίγεις σε text mode.
Υ.γ. Το ερώτημα τώρα είναι τι κάνεις αν όντως θες να γράψεις τη τιμή του ESC.
+1 , μαλλόν δεν γίνεται να το αποφύγεις το binary άνοιγμα .
|
|
|
10
|
Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα / Προγραμματισμός (C, VB, Delphi, PHP, ASP...) / Re: Χαρακτήρας EOF μέσα σε αρχείο
|
on: April 30, 2008, 19:43:34 pm
|
Ο αριθμός των bytes στο αρχείο ισούται με datanum. Ο sc είναι pointer σε char, ο fp είναι pointer στο αρχείο που διαβάζω και ο si είναι πίνακας int. Αγνοήστε το if block, το θέμα είναι ότι όταν βάζω breakpoint αμέσως μετά το if (feof(fp))printf("%c",(*sc)) αρχίζει να μου εκτυπώνει "G" μετά από λίγες εκτελέσεις του βρόχου ενώ το αρχείο είναι τεράστιο στην πραγματικότητα. Το G είναι το τελευταίο γράμμα πριν το SUB, οπότε νομίζω ότι εκεί γίνεται η ζημιά.
for (i=0;i<datanum;i++){ fscanf(fp,"%c",sc); if (feof(fp))printf("%c",(*sc)); if (i%2) si[i/2]+=(int)16*(*sc); else si[i/2]=(int)(*sc); }
Βασικά έτσι όπως το έχεις γράψει η printf δεν εκτελείται καθόλου , πρέπει να έχεις if ( !feof(fp))printf("%c",(*sc)); Όσο δεν βρίσκει το τέλος επιστρέφει 0 οπότε για να δουλεύει το if θα πρέπει να βάλεις τον τελεστή !.
|
|
|
11
|
Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα / Προγραμματισμός (C, VB, Delphi, PHP, ASP...) / Re: Χαρακτήρας EOF μέσα σε αρχείο
|
on: April 30, 2008, 18:33:50 pm
|
Βασικά το προβλήμα μπορεί να είναι και αλλού , ισώς να μην αποθηκευείς σωστά τους χαρακτηρές που διαβάζεις απο το αρχείο ? Μπορείς να ποστάρεις τον κώδικα ? Μα αυτό δε γίνεται!!! Μπορείς να δείξεις κώδικα και το αρχείο (η κάποιο παρόμοιο αν μπορείς) για να δούμε του λόγου το αληθές?? Το μοναδικό που μου έρχεται, είναι αν προσπαθεί να διαβάσει κανένα περίεργο η non-printable χαρακτήρα και γίνεται καμια κουταμάρα... αλλά αυτό το λέω από διαίσθηση. Σε windows πάντα έτσι? Για βοήθα μας λίγο νεσσα  +1
|
|
|
12
|
Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα / Προγραμματισμός (C, VB, Delphi, PHP, ASP...) / Re: Χαρακτήρας EOF μέσα σε αρχείο
|
on: April 30, 2008, 18:24:38 pm
|
Η συνάρτηση feof δε σου δείχνει το τέλος του αρχείου, σου δείχνει απλά πού υπάρχει EOF.
Εγώ διαβάζω έναν έναν τους χαρακτήρες, αλλά μετά από λίγο δε μπορεί να διαβάσει άλλο γιατί έχει σκαλώσει σε ένα σημείο και μου βγάζει συνέχεια τον ίδιο. Όταν δοκιμάζω με Quickbasic, στο σημείο αυτό μου βγάζει σφάλμα "input past end of file".
From Wikipedia, the free encyclopedia feof is a C function belonging to the ANSI C standard library, and declared in the file stdio.h. Its primary purpose is to distinguish between cases where a stream operation has reached the end of a file and cases where the "EOF" (End Of File) error message has simply been returned as a default error message, without the end of the file actually being reached.[edit] Function Prototype The function is used with syntax as follows: int feof(FILE *stream_pointer); It takes one argument: a pointer to the FILE structure of the stream to check. [edit] Return value The return value of the function is an integer. A nonzero value signifies that the end of the file has been reached; a value of zero signifies that it has not. [edit] Example code #include <stdio.h> int main(int argc, char **argv) { FILE *my_file; my_file = fopen("file.txt","r"); while(!feof(my_file)) { /* [...End of file not reached, do something with it...] */ } fclose(my_file); return 0; } Νομίζω πως η feof βρίσκει το τέλος του αρχείου και όχι την EOF σταθερά . Δοκίμασες με feof και δεν σου δούλεψε ?
|
|
|
|