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

Πρόγραμμα στην C++ για MS-DOS


mike...

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

Δημοσ.

παιδιά χρειάζομαι βοήθεια για να πραγματοποιήσω ένα πρόγραμμα στην C++ με προσομοίωση της εντολής MORE του MS-DOS

 

μπορεί κάποιος να βοηθήσει?

Δημοσ.

more /? για να δεις τι κάνει και τι παραμέτρους έχει

 

1) πρέπει το πρόγραμμα σου να δέχεται παραμέτρους

π.χ. mymore.exe c:\xaxa.txt

 

2) πρέπει να μπορείς να διαβάζεις το αρχείο που θέλει ο χρήστης

γραμμή γραμμή

 

3)ανάλογα με τις παραμέτρους να γίνεται και η εμφάνιση στην οθόνη

Δημοσ.

1) πρέπει το πρόγραμμα σου να δέχεται παραμέτρους

π.χ. mymore.exe c:\xaxa.txt

 

δηλαδή?

 

2) πρέπει να μπορείς να διαβάζεις το αρχείο που θέλει ο χρήστης

γραμμή γραμμή

 

δεν διδαχτήκαμε το πώς διαβάζει αρχείο σε πρόγραμμα διάβασα από μόνος μου αλλά κάτι πάει λάθος

 

δεν θέλω έτυμο πρόγραμμα απλός θέλω βοήθεια να το λύσω και Δευτέρα πρέπει να το παραδώσω

Δημοσ.

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

Δημοσ.
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?

Δημοσ.
ναι αλλά πώς μπορώ να δηλώσω κάποιο αρχείο για να μπορώ να βγάλω το αποτέλεσμα με το more?

 

Η δουλειά αυτή γίνετε σε shell συνήθως και όχι μέσα από το πρόγραμμα. Αυτό βοηθάει και το scripting, γιατί έτσι όλες οι εντολές αποκτούν ένα τρόπο να γράψουνε σε αρχείο τα δεδομένα εξόδου. Αν γράψεις

>
program > path

Το "output" του προγράμματος θα γραφτεί στο αρχείο με όνομα "path", δηλαδή:

>
dir . > arxeia.txt

 

Αυτό το αρχείο θα είχε μια λίστα με τα αρχεία στον φάκελο που βρίσκετε, συν του εαυτού του. Αυτό συμβαίνει γιατί το shell ανοίγει το αρχείο για γράψιμο πριν καν εκτελέσει την εντολή.

 

Κάτι άλλο: να θυμάσαι ότι το > πάντα διαγραφει το αρχείο αν αυτό υπάρχει. Να είσαι προσεχτικός για να μην διαγράψεις κάτι σημαντικό. Επίσης, το >> θα γράψει το output μπροστά από αυτά που υπήρχαν πριν στο αρχείο. (append)

Δημοσ.

Φίλε συγνώμη αλλά αν γίνεται να βοηθήσεις λίγο περισσότερο δοκίμασα αυτό που μου είπες όμως μου βγάζει λάθει μάλλον δεν κατάλαβα ακριβώς τη εννοείς

Δημοσ.

γιατί δεν μας δείχνεις τι έχεις κάνει; Μόνο έτσι θα καταλάβουμε σε τι στάδιο είσαι και πόση βοήθεια θες.:-)

Δημοσ.

έστω ότι έχεις 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

 

υλοποίησε το σε κώδικα και στείλε τον εδώ να σε βοηθήσουμε.

Δημοσ.

Το δοκίμασα όμως δεν μου βγάζει αποτέλεσμα. Χ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.

Δημοσ.

f1=fopen("text.txt","r");

system("MORE");

 

 

αφού χρησιμοποιείς την system τι την θες την fopen?

 

αν θες να το κάνεις με την system γράψε

system("MORE text.txt");

όπως ακριβώς θα το έκανες στο dos.

Δημοσ.

[βέβαια υπάρχει και το freopen(stdio,"text1.txt")...] αλλά η όλη προσέγγυση είναι λάθος.

Δεν μπορείς να κάνεις προσομείωση εντολής με χρήση της ίδιας εντολής.

Πρέπει να διαβάσεις με το παράδειγμα του virxen τις παραμέτρους που δίνει ο χρήστης κατα την εκτέλεση της εντολής (π.χ. αν δώσει "mymore file1.txt", το argv[1] θα είναι το "file1.txt").

Κατόπιν να ανοίξεις το αρχείο αυτό και να διαβάζεις χαρακτήρα-χαρακτηρα και θα τυπώνεις οτι διαβάζεις απο αυτό. Καθε φορά που γεμίζει η οθονη σου, θα περιμένεις να πατηθεί SPACE ή ENTER για να συνεχίσεις στην επόμενη "σελίδα".

κτλ κτλ

Δημοσ.

ναι όμως πως γίνεται? δεν έχω καταλάβει καλά εκείνο τον κώδικα

 

---------- Το μήνυμα προστέθηκε στις 15:03 ----------

 

αφού χρησιμοποιείς την system τι την θες την fopen?

 

αν θες να το κάνεις με την system γράψε

system("MORE text.txt");

όπως ακριβώς θα το έκανες στο dos.

 

δεν μου βγάζει αποτέλεσμα

 

παιδιά αν μπορείτε βοηθάτε γιατί αύριο θα πρέπει να το παραδώσω

Δημοσ.

αν δεν έχεις καταλάβει εκείνο τον κώδικα, ξέχνα το more. Βρες στο google τι είναι το main, τα argc,argv, τι κάνει η printf και μετά το συζητάμε

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

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

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