mike... Δημοσ. 21 Μαΐου 2009 Δημοσ. 21 Μαΐου 2009 παιδιά χρειάζομαι βοήθεια για να πραγματοποιήσω ένα πρόγραμμα στην C++ με προσομοίωση της εντολής MORE του MS-DOS μπορεί κάποιος να βοηθήσει?
virxen75 Δημοσ. 22 Μαΐου 2009 Δημοσ. 22 Μαΐου 2009 more /? για να δεις τι κάνει και τι παραμέτρους έχει 1) πρέπει το πρόγραμμα σου να δέχεται παραμέτρους π.χ. mymore.exe c:\xaxa.txt 2) πρέπει να μπορείς να διαβάζεις το αρχείο που θέλει ο χρήστης γραμμή γραμμή 3)ανάλογα με τις παραμέτρους να γίνεται και η εμφάνιση στην οθόνη
mike... Δημοσ. 22 Μαΐου 2009 Μέλος Δημοσ. 22 Μαΐου 2009 1) πρέπει το πρόγραμμα σου να δέχεται παραμέτρους π.χ. mymore.exe c:\xaxa.txt δηλαδή? 2) πρέπει να μπορείς να διαβάζεις το αρχείο που θέλει ο χρήστης γραμμή γραμμή δεν διδαχτήκαμε το πώς διαβάζει αρχείο σε πρόγραμμα διάβασα από μόνος μου αλλά κάτι πάει λάθος δεν θέλω έτυμο πρόγραμμα απλός θέλω βοήθεια να το λύσω και Δευτέρα πρέπει να το παραδώσω
virxen75 Δημοσ. 22 Μαΐου 2009 Δημοσ. 22 Μαΐου 2009 mymore.c > #include <stdio.h> void main( int argc, char *argv[] ) { int ctr; for( ctr=0; ctr < argc; ctr++ ) { printf("\n %s",argv[ctr] ); } } κάνε το compile-link και φτιάξε το mymore.exe τρέξε το στο dos c:\xxxx\xxx>mymore c:\dfgdfg\dfg /s /p και δες το αποτέλεσμα στην οθόνη αυτο είναι το 1) ---------- Το μήνυμα προστέθηκε στις 10:59 ---------- δες και εδώ http://riki-lb1.vet.ohio-state.edu/mqlin//computec/tutorials/C_Tutorial/sources/mymore.c http://www.cs.caltech.edu/~nfette/cs11/cpp/practice/mymore/mymore.cc
mike... Δημοσ. 22 Μαΐου 2009 Μέλος Δημοσ. 22 Μαΐου 2009 mymore.c > #include <stdio.h> void main( int argc, char *argv[] ) { int ctr; for( ctr=0; ctr < argc; ctr++ ) { printf("\n %s",argv[ctr] ); } } κάνε το compile-link και φτιάξε το mymore.exe τρέξε το στο dos c:\xxxx\xxx>mymore c:\dfgdfg\dfg /s /p και δες το αποτέλεσμα στην οθόνη αυτο είναι το 1) ναι αλλά πώς μπορώ να δηλώσω κάποιο αρχείο για να μπορώ να βγάλω το αποτέλεσμα με το more?
C6WGMN Δημοσ. 22 Μαΐου 2009 Δημοσ. 22 Μαΐου 2009 ναι αλλά πώς μπορώ να δηλώσω κάποιο αρχείο για να μπορώ να βγάλω το αποτέλεσμα με το more? Η δουλειά αυτή γίνετε σε shell συνήθως και όχι μέσα από το πρόγραμμα. Αυτό βοηθάει και το scripting, γιατί έτσι όλες οι εντολές αποκτούν ένα τρόπο να γράψουνε σε αρχείο τα δεδομένα εξόδου. Αν γράψεις > program > path Το "output" του προγράμματος θα γραφτεί στο αρχείο με όνομα "path", δηλαδή: > dir . > arxeia.txt Αυτό το αρχείο θα είχε μια λίστα με τα αρχεία στον φάκελο που βρίσκετε, συν του εαυτού του. Αυτό συμβαίνει γιατί το shell ανοίγει το αρχείο για γράψιμο πριν καν εκτελέσει την εντολή. Κάτι άλλο: να θυμάσαι ότι το > πάντα διαγραφει το αρχείο αν αυτό υπάρχει. Να είσαι προσεχτικός για να μην διαγράψεις κάτι σημαντικό. Επίσης, το >> θα γράψει το output μπροστά από αυτά που υπήρχαν πριν στο αρχείο. (append)
mike... Δημοσ. 22 Μαΐου 2009 Μέλος Δημοσ. 22 Μαΐου 2009 Φίλε συγνώμη αλλά αν γίνεται να βοηθήσεις λίγο περισσότερο δοκίμασα αυτό που μου είπες όμως μου βγάζει λάθει μάλλον δεν κατάλαβα ακριβώς τη εννοείς
bxenos Δημοσ. 23 Μαΐου 2009 Δημοσ. 23 Μαΐου 2009 γιατί δεν μας δείχνεις τι έχεις κάνει; Μόνο έτσι θα καταλάβουμε σε τι στάδιο είσαι και πόση βοήθεια θες.
virxen75 Δημοσ. 23 Μαΐου 2009 Δημοσ. 23 Μαΐου 2009 έστω ότι έχεις windows xp (αληθεια τι λειτουργικό χρησιμοποιείς?) έναρξη(start)-->εκτέλεση(run)--->cmd και πάτα ok θα σε βγάλει σε dos emulate παράθυρο. αν έχεις το mymore.exe έστω στον κατάλογο c:\myprog c:\...\...\>cd \myprog c:\myprog>mymore c:\aaa.txt /s θα σου εμφανίσει c:\aaa.txt -->to ονομα αρχείου που θέλεις--->τιμή από εδώ--> argv[0] /s --> η παράμετρος που θες -->τιμή από εδώ--> argv[1] άρα πρέπει να διαχειριστείς την είσοδο παραμέτρων 1)να ελεγξεις αν υπάρχει το αρχείο -->τιμή από εδώ--> argv[0] 2)αν οι υπόλοιπες παράμετροι που δίνει ο χρήστης υποστηρίζονται π.χ. αν δώσω παράμετρο /xdfg σαφώς δεν υποστηρίζεται από την more υλοποίησε το σε κώδικα και στείλε τον εδώ να σε βοηθήσουμε.
mike... Δημοσ. 23 Μαΐου 2009 Μέλος Δημοσ. 23 Μαΐου 2009 Το δοκίμασα όμως δεν μου βγάζει αποτέλεσμα. ΧP χρησιμοποιώ. Από το dos ξέρω να χρησιμοποιώ το more από το πρόγραμμα της C δεν μπορώ να την χρησιμοποιήσω? >#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { FILE *f1; char com[6]; printf("Kalws Orisate stin prosomoiosi tou ΜΟRE se c++\n"); printf("Mporw na ektelesw tis parakatw entoles:\n\n"); printf("\n 1.CLS\n 2.MORE\n 3.EXIT\n\n"); scanf("%s",&com); while (strcmp(com,"EXIT")!=0) { if(strcmp(com,"CLS")==0) { system("CLS"); printf("\n 1.CLS\n 2.MORE\n 3.EXIT\n\n"); scanf("%s",&com); } else if(strcmp(com,"MORE")==0) { f1=fopen("text.txt","r"); system("MORE"); printf("\n 1.CLS\n 2.MORE\n 3.EXIT\n\n"); scanf("%s",&com); } else { printf("Lathos epilogi"); printf("\n\nMporw na ektelesw MONO tis parakatw entoles:\n\n"); printf("\n 1.CLS\n 2.MORE\n 3.EXIT\n\n"); scanf("%s",&com); } } fclose(f1); } Και όταν καταφέρω να δουλέψει με το more θα προσθέσω όλες τις δυνατές επιλογές (οptions) της αρχικής εντολής του dos.
virxen75 Δημοσ. 24 Μαΐου 2009 Δημοσ. 24 Μαΐου 2009 f1=fopen("text.txt","r"); system("MORE"); αφού χρησιμοποιείς την system τι την θες την fopen? αν θες να το κάνεις με την system γράψε system("MORE text.txt"); όπως ακριβώς θα το έκανες στο dos.
bxenos Δημοσ. 24 Μαΐου 2009 Δημοσ. 24 Μαΐου 2009 [βέβαια υπάρχει και το freopen(stdio,"text1.txt")...] αλλά η όλη προσέγγυση είναι λάθος. Δεν μπορείς να κάνεις προσομείωση εντολής με χρήση της ίδιας εντολής. Πρέπει να διαβάσεις με το παράδειγμα του virxen τις παραμέτρους που δίνει ο χρήστης κατα την εκτέλεση της εντολής (π.χ. αν δώσει "mymore file1.txt", το argv[1] θα είναι το "file1.txt"). Κατόπιν να ανοίξεις το αρχείο αυτό και να διαβάζεις χαρακτήρα-χαρακτηρα και θα τυπώνεις οτι διαβάζεις απο αυτό. Καθε φορά που γεμίζει η οθονη σου, θα περιμένεις να πατηθεί SPACE ή ENTER για να συνεχίσεις στην επόμενη "σελίδα". κτλ κτλ
mike... Δημοσ. 24 Μαΐου 2009 Μέλος Δημοσ. 24 Μαΐου 2009 ναι όμως πως γίνεται? δεν έχω καταλάβει καλά εκείνο τον κώδικα ---------- Το μήνυμα προστέθηκε στις 15:03 ---------- αφού χρησιμοποιείς την system τι την θες την fopen? αν θες να το κάνεις με την system γράψε system("MORE text.txt"); όπως ακριβώς θα το έκανες στο dos. δεν μου βγάζει αποτέλεσμα παιδιά αν μπορείτε βοηθάτε γιατί αύριο θα πρέπει να το παραδώσω
bxenos Δημοσ. 24 Μαΐου 2009 Δημοσ. 24 Μαΐου 2009 αν δεν έχεις καταλάβει εκείνο τον κώδικα, ξέχνα το more. Βρες στο google τι είναι το main, τα argc,argv, τι κάνει η printf και μετά το συζητάμε
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.