Επιστροφή στο Forum : MS-DOS C++ (RD-DIR)
ΚΑΛΗΣΠΕΡΑ ΘΑ ΗΘΕΛΑ ΤΙ ΒΟΗΘΕΙΑ ΣΑΣ ΣΧΕΤΙΚΑ ΜΕ ΕΝΑ ΠΡΟΤΖΕΚΤ ΠΟΥ ΜΑΣ ΕΧΟΥΝ ΒΑΛΕΙ!!
ΚΑΤΑΡΧΗΝ ΕΙΜΑΙ ΑΡΧΑΡΙΟΣ ΚΑΙ ΜΕ ΤΗΝ C++ ΚΑΘΩΣ ΚΑΙ ΜΕ ΤΟ MS-DOS.
Η ΕΡΩΤΗΣΗ ΕΙΝΑΙ :
Προσομοίωση της εντολής “DIR” σε συνδυασμό με την “RD” με πρόγραμμα σε γλώσσα C++ με συμπερίληψη όλων των δυνατών επιλογών (options) της αρχικής εντολής του DOS.
ΔΕ ΘΑ ΗΘΕΛΑ ΚΑΠΟΙΑ ΛΥΣΗ ΑΠΛΑ ΚΑΠΟΙΑ ΒΟΗΘΕΙΑ Ή ΕΝΑ ΠΑΡΑΔΕΙΓΜΑ ΑΦΟΥ ΣΤΟ ΤΕΙ ΜΟΛΙΣ ΤΩΡΑ ΜΠΗΚΑΜΕ ΣΤΟ MS-DOS ΚΑΙ ΔΕΝ ΕΧΩ ΙΔΕΑ!!!!!!
ΕΥΧΑΡΙΣΤΩ ΠΡΟΚΑΤΑΒΟΛΙΚΑ!!!!
rd =remove directory(folder-φάκελος στα windows)
π.χ.
c:\>rd fff
διαγράφει τον κατάλογο c:\fff ΜΟΝΟ ΚΑΙ ΜΟΝΟ ΑΝ ΕΙΝΑΙ ΚΕΝΟΣ
δηλαδή χωρίς αρχεία ή υποκαταλόγους
στο dos γράψε
c:\>dir /?
και θα σου δώσει τις παραμέτρους που έχει η dir
c:\>rd /?
και θα σου δώσει τις παραμέτρους που έχει η rd
#include <stdio.h>
#include <dos.h>
void main()
{
struct find_t q ;
int a;
a = _dos_findfirst("*.*",1,&q);
if(a==0)
{
while (!a)
{
printf(" %s\n", q.name);
a = _dos_findnext(&q);
}
}
else
{
printf("File not found");
}
}
παράδειγμα του dir *.*
καλή συνέχεια!
ότι άλλο θες στέλνε τον κώδικα σου και που κολλάς και αν μπορώ θα σε βοηθήσω
WagItchyef
17-05-09, 13:28
ΚΑΛΗΣΠΕΡΑ ΘΑ ΗΘΕΛΑ ΤΙ ΒΟΗΘΕΙΑ ΣΑΣ ΣΧΕΤΙΚΑ ΜΕ ΕΝΑ ΠΡΟΤΖΕΚΤ ΠΟΥ ΜΑΣ ΕΧΟΥΝ ΒΑΛΕΙ!!
ΚΑΤΑΡΧΗΝ ΕΙΜΑΙ ΑΡΧΑΡΙΟΣ ΚΑΙ ΜΕ ΤΗΝ C++ ΚΑΘΩΣ ΚΑΙ ΜΕ ΤΟ MS-DOS.
Η ΕΡΩΤΗΣΗ ΕΙΝΑΙ :
Προσομοίωση της εντολής “DIR” σε συνδυασμό με την “RD” με πρόγραμμα σε γλώσσα C++ με συμπερίληψη όλων των δυνατών επιλογών (options) της αρχικής εντολής του DOS.
ΔΕ ΘΑ ΗΘΕΛΑ ΚΑΠΟΙΑ ΛΥΣΗ ΑΠΛΑ ΚΑΠΟΙΑ ΒΟΗΘΕΙΑ Ή ΕΝΑ ΠΑΡΑΔΕΙΓΜΑ ΑΦΟΥ ΣΤΟ ΤΕΙ ΜΟΛΙΣ ΤΩΡΑ ΜΠΗΚΑΜΕ ΣΤΟ MS-DOS ΚΑΙ ΔΕΝ ΕΧΩ ΙΔΕΑ!!!!!!
ΕΥΧΑΡΙΣΤΩ ΠΡΟΚΑΤΑΒΟΛΙΚΑ!!!!
Ποιον compiler χρησιμοποιείτε;
........Auto merged post: WagItchyef πρόσθεσε 2 λεπτά και 4 δευτερόλεπτα αργότερα ........
rd =remove directory(folder-φάκελος στα windows)
π.χ.
c:\>rd fff
διαγράφει τον κατάλογο c:\fff ΜΟΝΟ ΚΑΙ ΜΟΝΟ ΑΝ ΕΙΝΑΙ ΚΕΝΟΣ
δηλαδή χωρίς αρχεία ή υποκαταλόγους
στο dos γράψε
c:\>dir /?
και θα σου δώσει τις παραμέτρους που έχει η dir
c:\>rd /?
και θα σου δώσει τις παραμέτρους που έχει η rd
#include <stdio.h>
#include <dos.h>
void main()
{
struct find_t q ;
int a;
a = _dos_findfirst("*.*",1,&q);
if(a==0)
{
while (!a)
{
printf(" %s\n", q.name);
a = _dos_findnext(&q);
}
}
else
{
printf("File not found");
}
}
παράδειγμα του dir *.*
καλή συνέχεια!
ότι άλλο θες στέλνε τον κώδικα σου και που κολλάς και αν μπορώ θα σε βοηθήσω
Καλό θα ήταν να μας έλεγες ποια system specific βιβλιοθήκη χρησιμοποιείς.
Επειδή γράφεις πρόγραμμα σε C και όχι σε C++, στην ISO C, οι δυνατές μορφές της main() είναι οι ακόλουθες:
int main(), int main(void) [αυτές οι δύο μορφές δεν είναι ταυτόσημες], int main(int argc, char *argv[]) / int main(int argc, char **argv).
Στην ISO C++, οι δυνατές μορφές της main() είναι οι ακόλουθες:
int main()/ int main(void), int main(int argc, char *argv[]) / int main(int argc, char **argv).
Πέρα απ' το να δώσεις σε κονσόλα
dir /? και
rd /? όπως λέει και ο virxen, μπορείς να ψάξεις λίγο και στο Google, κυρίως επειδή τα options αυτών των εντολών έχουν διαφοροποιηθεί στις εκδόσεις Windows από τις αρχικές DOS εκδόσεις (και φαντάζομαι δεν σου βρίσκεται διαθέσιμη κάποια πρόχειρη εγκατάσταση DOS 6.2 :p). Δες εδώ ένα site, το πρώτο που μου βγήκε στην αναζήτηση: http://www.computerhope.com/dirhlp.htm
@Virxen: Δεν νομίζω ότι η άσκηση ζητάει να χρησιμοποιηθούν βιβλιοθήκες DOS. Το λέω επειδή ο κώδικας που έγραψες χρησιμοποιεί κλήσεις από το dos.h. Εγώ καταλαβαίνω ότι τα παιδιά πρέπει να γράψουν ένα πρόγραμμα από το μηδέν που να κάνει ό,τι θα έκαναν οι dir και rd, χρησιμοποιώντας δηλαδή μόνο standard κλήσεις της C++ (το οποίο ενδεχομένως να τρέχει σε οποιαδήποτε πλατφόρμα).
Επειδή γράφεις πρόγραμμα σε C και όχι σε C++, στην ISO C, οι δυνατές μορφές της main() είναι οι ακόλουθες:
int main(), int main(void) [αυτές οι δύο μορφές δεν είναι ταυτόσημες], int main(int argc, char *argv[]) / int main(int argc, char **argv).
Στην ISO C++, οι δυνατές μορφές της main() είναι οι ακόλουθες:
int main()/ int main(void), int main(int argc, char *argv[]) / int main(int argc, char **argv).
Μεγάλε, είσαι θεός! Ο άνθρωπος ρώτησε για τη χρήση δύο εντολών του DOS/command line κι εσύ κατάφερες και το γύρισες πάλι σε misconceptions της C. :worthy::worthy::worthy::rofl: Είσαι άπαιχτος, υποκλίνομαι :respekt::clap:
WagItchyef
18-05-09, 13:13
Μεγάλε, είσαι θεός! Ο άνθρωπος ρώτησε για τη χρήση δύο εντολών του DOS/command line κι εσύ κατάφερες και το γύρισες πάλι σε misconceptions της C. :worthy::worthy::worthy::rofl: Είσαι άπαιχτος, υποκλίνομαι :respekt::clap:
θεός δεν είμαι, αλλά με Την Βοήθεια Του Θεού, όποτε βλέπω λάθη θα τα διορθώνω πάντοτε.
........Auto merged post: WagItchyef πρόσθεσε 4 λεπτά και 56 δευτερόλεπτα αργότερα ........
Τo "DOS" των Windows XP, κ.λ.π. βασίστηκε στο MS DOS 5.0, οπότε έχουν ότι είχε το MS DOS 5.0. Έτσι π.χ. έχουν την rd /s /q για τη διαγραφή καταλόγων γεμάτων ή άδειων, και όχι την deltree /y.
@Virxen: Δεν νομίζω ότι η άσκηση ζητάει να χρησιμοποιηθούν βιβλιοθήκες DOS. Το λέω επειδή ο κώδικας που έγραψες χρησιμοποιεί κλήσεις από το dos.h. Εγώ καταλαβαίνω ότι τα παιδιά πρέπει να γράψουν ένα πρόγραμμα από το μηδέν που να κάνει ό,τι θα έκαναν οι dir και rd, χρησιμοποιώντας δηλαδή μόνο standard κλήσεις της C++ (το οποίο ενδεχομένως να τρέχει σε οποιαδήποτε πλατφόρμα).
και πως προτείνεις να βρουν όλα τα αρχεία που υπάρχουν στον δίσκο
όπως κάνει η dir *.* π.χ.
αν υπάρχει άλλος τρόπος εκτος από την χρήση του dos.h
πες μας τον.
ευχαριστω και παλι το μαθημα ειναι λειτουργικα συστηματα!!!
WagItchyef χρησιμοποιουμε το CodeGear™ C++Builder® 2009 στο προγραμματισμο
Παντως οπως λεει και ο murray πρεπει να φτιαξουμε ενα προγραμμα απο το μηδεν...
οι υπολογιστες που χρησιμοποιουμε εχουν λειτουργικο συστημα windows 2000 :p:p
WagItchyef
18-05-09, 21:40
Σας είπαν τίποτα στο μάθημα για το ποιες συναρτήσεις/κατηγορίες θα χρησιμοποιήσετε; Σας έδωσαν ως παράδειγμα τον κώδικα υλοποίησης μίας ή περισσότερων παρόμοιων εντολών του DOS;
και πως προτείνεις να βρουν όλα τα αρχεία που υπάρχουν στον δίσκο
όπως κάνει η dir *.* π.χ.
αν υπάρχει άλλος τρόπος εκτος από την χρήση του dos.h
πες μας τον.
Διακρίνω κάποια επιθετικότητα; Κι εγώ δεν ξέρω πώς αλλιώς θα μπορούσε να υλοποιήσει το ζητούμενο, αλλά νόμιζα ότι επρόκειτο για κάποια άσκηση σε εισαγωγικό μάθημα της C. Τώρα που μας είπε ο φίλος ότι είναι άσκηση στο μάθημα των λειτουργικών συστημάτων συμφωνώ με τον τρόπο που υπέδειξες.
Κατά τ' άλλα δεν νομίζω ότι χρειάζεται να δωθεί παράδειγμα για τέτοια άσκηση. Τι είμαστε εδώ; Γυμνάσιο που κάναμε 5 είδη ασκήσεων και στις εξετάσεις έπεφταν τα ίδια θέματα με αλλαγμένα νούμερα;
Προσπάθησε φίλε μου να την κάνεις και όπου κολλήσεις εδώ είμαστε. ;)
Διακρίνω κάποια επιθετικότητα;
sorry murray αν το εξελαβες έτσι δεν είχα τέτοια πρόθεση
WagItchyef
19-05-09, 09:29
Κατά τ' άλλα δεν νομίζω ότι χρειάζεται να δωθεί παράδειγμα για τέτοια άσκηση. Τι είμαστε εδώ; Γυμνάσιο που κάναμε 5 είδη ασκήσεων και στις εξετάσεις έπεφταν τα ίδια θέματα με αλλαγμένα νούμερα;
Δεν μπορεί να τους ζητούνται πράγματα χωρίς να έχουν διδαχθεί κάτι παραπλήσιο. Αλλιώς μαθαίναν προγραμματισμό μόνοι τους στο σπίτι τους.
Τo "DOS" των Windows XP, κ.λ.π. βασίστηκε στο MS DOS 5.0, οπότε έχουν ότι είχε το MS DOS 5.0. Έτσι π.χ. έχουν την rd /s /q για τη διαγραφή καταλόγων γεμάτων ή άδειων, και όχι την deltree /y.
Θα έλεγα ότι βασίστηκε στο DOS 6.22
και πως προτείνεις να βρουν όλα τα αρχεία που υπάρχουν στον δίσκο
όπως κάνει η dir *.* π.χ.
αν υπάρχει άλλος τρόπος εκτος από την χρήση του dos.h
πες μας τον.
opendir, readdir
sorry murray αν το εξελαβες έτσι δεν είχα τέτοια πρόθεση
ΟΚ :)
Δεν μπορεί να τους ζητούνται πράγματα χωρίς να έχουν διδαχθεί κάτι παραπλήσιο. Αλλιώς μαθαίναν προγραμματισμό μόνοι τους στο σπίτι τους.
Εδώ σου λέει ότι κάνουν μάθημα λειτουργικών συστημάτων, όχι εισαγωγικό μάθημα στον προγραμματισμό. Θεωρείται δηλαδή ότι η γλώσσα που χρησιμοποιούν είναι ήδη γνωστή και δεν μαθαίνουν προγραμματισμό όπως λες (θεωρητικά τουλάχιστον). ;)
opendir, readdir
Δεν ήξερα ότι υπάρχουν αυτές οι συναρτήσεις, αλλά από λίγο ψάξιμο που έκανα είδα ότι περιλαμβάνονται στη header <dirent.h> και δεν είναι μέρος της standard ANSI βιβλιοθήκης, οπότε πρέπει να σιγουρευτείς ότι υπάρχει υλοποίηση για το μηχάνημα πάνω στο οποίο προγραμματίζεις (αν και σύμφωνα με το wiki είναι ψευδο-standard, οπότε μάλλον δεν θα έχεις κανένα πρόβλημα).
Από την άλλη, αφού μιλάμε για λειτουργικά συστήματα, μάλλον οι καθηγητές θα θέλουν κλήσεις συστήματος, οπότε ενθαρρύνω κι εγώ να πας προς τη λύση που πρότεινε στην αρχή ο virxen.
όσο αφορά το
#include <dirent.h>
δες εδώ
http://www.softagalleria.net/dirent.php
WagItchyef
19-05-09, 10:54
Θα έλεγα ότι βασίστηκε στο DOS 6.22
Κάνεις λάθος. Βασίστηκε στο DOS 5.0. Το 6.22 είχε την deltree και δεν μπορούσες να σβήσεις γεμάτο κατάλογο με την rd.
Επίσης το 6.22 είχε την scandisk για τον έλεχο του δίσκου.
Το έχω διαβάσει κάπου επισήμως, ότι το command line των Windows βασίστηκε στο DOS 5.0 (μάλλον από την εποχή των NT 4.0).
κατα τύχη έπεσα σε αυτό
www.teiser.gr/icd/staff/skaros/Leitourgika/Shmeiwseis_Project.pdf
WagItchyef
19-05-09, 14:41
Έχει μερικά λάθη, καλύτερα να έχετε το "The C Programming Language" 2nd Edition των Brian Kernighan, Dennis Ritchie (ο δημιουργός της C) ως βιβλίο αναφοράς, αφού έχετε περάσει όλα τα errata:
http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html
Κατά καιρούς το ανωτέρω link δεν δουλεύει. Αν δεν δουλεύει, έχω κάνει mirror τη σελίδα εδώ:
http://www.cpp-software.net/documents/other_documents/2ediffs.html
Ευχαριστω για τις πληροφοριες!!!τουλαχιστον τωρα ξερω πως να αρχισω
@ ADSLgr.com All rights reserved.