• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 23:46:19 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 23:46:19 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[Today at 21:32:50]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[Today at 21:25:42]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[Today at 20:59:13]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 19:46:54]

[Γραφική] Λυμένα θέματα
by okanpala
[Today at 18:56:22]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 14:25:00]

Αντικατάστασης πυκνωτή σε...
by george14
[Today at 13:58:20]

Πότε θα βγει το μάθημα; -...
by tzortzis
[Today at 13:19:53]

Αποτελέσματα Εξεταστικής ...
by george14
[Today at 12:08:25]

[ΨEE] Γενικές απορίες και...
by Juror8
[Today at 12:06:57]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426698
Total Topics: 31710
Online Today: 242
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 56
Guests: 149
Total: 205
athena_apo
Zaxarenia
odkoutrolikos
ppss
thomasdt
χασλμαλικι
christina02
etsilika
natavhoo
varvoutis
Annapar
Grigorisioan05
vaggelisx
PrincessConsuela
chaniotism
Stelios V.
ThanosV
sassi
Aglosdoum
dimopoul
stavr0s16
chrysa.tsilika
gprok
dorapangeiou
soule
tasos potsakis
Cersei Tsoulannister
soph553
Fovidis
DarkMagiK06
Dimos Bachlas
stelinas
MrGreekArrow
andyy
ppoug
sigklitiki
Aris★
kpapama
gpr000
spoun
dimitrisblioumis
dimchin
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
smanio
amprozos
soktas
valentini
nchatzo
tzesi
tzortzis
cheinopor
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads
με προσοχή στα ονόματα των αρχείων!
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) (Moderators: chatzikys, PolarBear) > Χαρακτήρας EOF μέσα σε αρχείο
0 Members and 1 Guest are viewing this topic.
Pages: 1 2 [3] Go Down Print
Author Topic: Χαρακτήρας EOF μέσα σε αρχείο  (Read 5531 times)
lambros
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 170


Mike Oldfield - Ommadawn :)


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #30 on: April 30, 2008, 19:52:26 pm »

Βασικά δοκίμασε και αυτό μήπως δουλέψει(αντικατέστησα το For με ένα While )

i=0;

while ((!feof(fp))
        {
         fscanf(fp,"%c",sc);
    printf("%c",(*sc));
    if (i%2)
    si[i/2]+=(int)16*(*sc);
    else
    si[i/2]=(int)(*sc);

          i++;
}
Logged

Έλευθερος είναι ο άνθρωπος που ζει μέσα στο Αιώνιο , γιατί αυτό είναι Ζωή.

Κ.
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #31 on: April 30, 2008, 19:54:36 pm »

Μα εγώ δε θέλω να τα εκτυπώσει όλα, εγώ θέλω να μου εκτυπώσει μόνο τον τελευταίο χαρακτήρα!
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #32 on: April 30, 2008, 19:57:39 pm »

deleted
« Last Edit: June 14, 2015, 19:40:17 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #33 on: April 30, 2008, 20:07:35 pm »

Lambro ο βρόχος αυτός καθαυτός δεν έχει πρόβλημα.

Code:
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);
}

Το θέμα είναι πως με το τρόπο που επέλεξες να διαβάσεις από το αρχείο, με την fscanf, δεν χρειάζεται ούτε η επανάληψη ούτε η feof. Δεν έχω προσπαθήσει κάτι τέτοιο (αν και θα το δω), αλλά εκ πρώτης όψεως η fscanf δε χρησιμοποιείται έτσι!

Από όσο έχω καταλάβει κάπως έτσι

Code:
while ( fscanf(blahblah) != EOF )

θα επανέλθω
Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #34 on: April 30, 2008, 20:55:27 pm »

Quote from: BOBoMASTORAS on April 30, 2008, 19:57:39 pm
Οπότε το ερώτημα είναι πως γράφηκε το αρχείο (binary ή text) αλλά κυρίως πως το άνοιξες. Από ότι φαίνεται το αρχείο γράφηκε σε binary mode και εσύ το ανοίγεις σε text mode.

Ναι, σωστό είναι αυτό, απλά θα προτιμούσα να ξεπεραστεί κάπως το πρόβλημα χωρίς να χρειαστεί να το ανοίξω ως binary. Ο κώδικας που χρειάζεται για να πάρω τις τιμές που θέλω είναι πολύ απλός, και θα μου ήταν αρκετά πιο δύσκολο να χειριστώ το αρχείο ως binary.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
lambros
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 170


Mike Oldfield - Ommadawn :)


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #35 on: April 30, 2008, 21:14:52 pm »

Quote from: BOBoMASTORAS on April 30, 2008, 19:57:39 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 άνοιγμα .
Logged

Έλευθερος είναι ο άνθρωπος που ζει μέσα στο Αιώνιο , γιατί αυτό είναι Ζωή.

Κ.
lambros
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 170


Mike Oldfield - Ommadawn :)


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #36 on: April 30, 2008, 21:21:26 pm »

Quote from: Nessa NetMonster on April 30, 2008, 18:43:40 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 όταν τελειώσει ο βρόχος .
Logged

Έλευθερος είναι ο άνθρωπος που ζει μέσα στο Αιώνιο , γιατί αυτό είναι Ζωή.

Κ.
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #37 on: April 30, 2008, 21:51:20 pm »

Μα όταν τελειώσει ο βρόχος for δε θα βρίσκομαι στο τέλος του αρχείου, θα βρίσκομαι πριν το πρώτο EOF.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #38 on: May 01, 2008, 13:51:08 pm »

deleted
« Last Edit: June 14, 2015, 19:40:14 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
Nessa NetMonster
Καταστραμμένος
********
Posts: 7044


Ιούνιος 1999 - 19/7/2009


View Profile
Re: Χαρακτήρας EOF μέσα σε αρχείο
« Reply #39 on: May 01, 2008, 17:30:46 pm »

Φτου... Sad

Ε τι να κάνουμε... binary τότε Roll Eyes

Ευχαριστώ πάντως.
Logged

Διεθνιστική Εργατική Αριστερά
Διεθνιστική Αριστερά
Εργατική Αριστερά
RedNet Θεσσαλονίκης
Pages: 1 2 [3] Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...