Προς το περιεχόμενο

Πως να βρω το filename από το FILE * ;


profitis

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους.

 

Κάνουμε ένα project σε flex και σε bison. Η είσοδος δίνεται στο flex ως εξής ./myProg < example.fpp ώστε να κάνουμε λεκτικη ανάλυση. Πως μπορώ αυτό το όνομα, το example.fpp να το πιάσω και να το αποθηκευσω σαν πίνακα; Ελεγξα το argv, δεν το κρατάει αφού απλά γίνεται ένα redirect. αντι να παίρνει το πρόγραμμα είσοδο απο το stdin του λέμε να παιρνει είσοδο απο το example.fpp. Μέσα στο πρόγραμμα γίνεται open το αρχείο και το FILE* για το εν λόγω αρχείο είναι διαθέσιμο. Μπορώ μέσα απο αυτό να βρω το όνομα του αρχείου;

 

Ευχαριστω εκ των προτέρων!

Επισκέπτης
Δημοσ.
Πως μπορώ αυτό το όνομα, το example.fpp να το πιάσω και να το αποθηκευσω σαν πίνακα;

 

 

δεν καταλαβαίνω τι θες να πετύχεις με το παραπάνω...και το κυριότερο, γιατί;

μπορείς με την

>[url="http://www.opengroup.org/onlinepubs/009695399/functions/fileno.html"]int fileno(FILE *stream);[/url]

να μετατρέψεις τον file pointer σε file descriptor και από κει και πέρα αυτό που λέει αυτό εδώ...

Δημοσ.

Γενικά δεν γνωρίζεις τι πληροφορίες περιέχει το FILE struct. Ούτε αυτό που πρότινε ο φίλος βοηθάει διότι πρώτων το file descriptor του stdin είναι 0 και δεύτερων δεν είναι αρχείο στον δίσκο. Ο τρόπος είναι: αφού έχεις εξετάσει τους όρους του προγράμματος, αν δεν έχει δοθεί όνομα αρχείου, διαβάζεις από stdin. Δεν μπορείς να γνωρίζεις από ποιό αρχείο προέρχονται τα περιεχόμενα. Απλούστερα, πέρασε το όνομα του αρχείου σαν παράμετρο, δηλαδή ./myprog myfile.fpp αν θες το πρόγραμμα να γνωρίζει το αρχείο.

Δημοσ.

πιστεύω θα υπάρχουν λύσεις, ακόμα και τα αρχεία κονσόλας (συσκευές) έχουν device id.

πχ. ένα γρήγορο search για obtain filename from handle, έδωσε μια απάντηση για windows πάνω-πάνω...

Ψάξε φυσικά και το standard stat.h...

Επισκέπτης
Δημοσ.

μη μπερδεύεις όμως τις ευκολίες που σου προσφέρει το Win32 (custom-ιες της microsoft) με το POSIX.1

Δημοσ.

Ευχαριστώ για τις απάντησεις! Αυτό είχαμε σκεφτεί και εμείς αλλά η άσκηση που θέλει να παραδοθεί έχει σαν προδιαγραφές ότι η είσοδος πρέπει να διλεται έτσι,

με redirect! Οπότε καλύτερα αυτό να μην το αλλάξουμε γιατί η εξέταση θα γίνεται ακριβώς με το συγκεκριμένο τρόπο-εντολή!

./myProg < example.fpp

 

Επειδή και τα άλλα θέλουν κόπο κα

 

Sent from my iPhone using Insomnia.app δεν καταφέραμε να βρούμε τίποτα ιδιαίτερο μάλλον θα το αφήσουμε. Με argv νομίζω είναι το πιο απλό, αλλά πρέπει η είσοδος να είναι με redirect, το αφήνουμε!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...