Άρθρο #15: Παράμετροι Γραμμής Εντολών
C++ Programmer's Corner :: Προγραμματισμός :: C :: Άρθρα
Σελίδα 1 από 1
Άρθρο #15: Παράμετροι Γραμμής Εντολών
Παράμετροι γραμμής εντολών είναι οτιδήποτε γράφουμε στην κονσόλα μετά το όνομα του προγράμματος που θέλουμε να τρέξουμε και πριν πατήσουμε [Enter].
Όπως είχα αναφέρει κάποτε στο πρώτο άρθρο, η "main()" έχει δύο δυνατές μορφές. Αυτή που χρησιμοποιούσαμε μέχρι τώρα και μια άλλη, που είναι αναντικατάστατη αν θέλουμε να χρησιμοποιήσουμε τις παραμέτρους που μπορεί να έχει δώσει ο χρήστης. Η σύνταξή της είναι πολύ απλή και συγκεκριμένη:
Για να εκτυπώσουμε απλά στην κονσόλα τις παραμέτρους θα κάναμε:
Λοιπόν, αυτός ο μηχανισμός θα μπορούσε να μας ωφελήσει με 1002 τρόπους. Πχ το πρόγραμμά μου θέλει να αποθηκεύσει κάπου τα αποτελέσματά του, άρα του δίνω ένα όνομα αρχείου. Μετατρέπει εικόνες RAW σε BMP, του δίνω το όνομα των αρχείων εισόδου/εξόδου και τις διαστάσεις της εικόνας, και πάει λέγοντας.
Τέλος, ας φτιάξουμε ένα προγραμματάκι που σου λέει το μέγεθος οποιουδήποτε αρχείου κι αν του δώσεις:
Είπα Happy Coding?
Όπως είχα αναφέρει κάποτε στο πρώτο άρθρο, η "main()" έχει δύο δυνατές μορφές. Αυτή που χρησιμοποιούσαμε μέχρι τώρα και μια άλλη, που είναι αναντικατάστατη αν θέλουμε να χρησιμοποιήσουμε τις παραμέτρους που μπορεί να έχει δώσει ο χρήστης. Η σύνταξή της είναι πολύ απλή και συγκεκριμένη:
- Κώδικας:
int main(int argc, char* argv[])
Για να εκτυπώσουμε απλά στην κονσόλα τις παραμέτρους θα κάναμε:
- Κώδικας:
/* μέσα στην main */
for (i = 1; i < argc; i++){
puts(argv[i]);
}
arg1
arg2
arg3
arg4
Λοιπόν, αυτός ο μηχανισμός θα μπορούσε να μας ωφελήσει με 1002 τρόπους. Πχ το πρόγραμμά μου θέλει να αποθηκεύσει κάπου τα αποτελέσματά του, άρα του δίνω ένα όνομα αρχείου. Μετατρέπει εικόνες RAW σε BMP, του δίνω το όνομα των αρχείων εισόδου/εξόδου και τις διαστάσεις της εικόνας, και πάει λέγοντας.
Τέλος, ας φτιάξουμε ένα προγραμματάκι που σου λέει το μέγεθος οποιουδήποτε αρχείου κι αν του δώσεις:
- Κώδικας:
#include <stdio.h>
/* Επιστρέφει το μέγεθος του αρχείου, αν δεν το βρει επιστρέφει -1 */
long fileSize(const char* filePath);
int main(int argc, char* argv[])
{
/* Αυτή η παράμετρος δεν είναι ποτέ μηδέν */
if (argc == 1)
puts("No filenames were given.");
else
{
int i;
for (i = 1; i < argc; i++){
long file_size = fileSize(argv[i]);
if (file_size >= 0)
printf("%s:\n\tSize in bytes: %ld\n", argv[i], file_size);
else
printf("Unable to open %s\n", argv[i]);
}
}
return 0;
}
long fileSize(const char* filePath)
{
FILE* filePtr;
long file_size = -1;
/* Ανοίγει σε δυαδική κατάσταση επειδή θέλουμε το
πραγματικό μέγεθος σε bytes, και όχι το διαμορφωμένο */
filePtr = fopen(filePath, "rb");
if (filePtr != NULL)
{
/* Στέλνει τον δείκτη στο τέλος του αρχείου */
fseek(filePtr, 0, SEEK_END);
/* Κρατάει την θέση του δείκτη, που αντιστοιχεί
στο μέγεθος του αρχείου */
file_size = ftell(filePtr);
/* Πάντα κλείνουμε το αρχείο όταν τελειώσουμε */
fclose(filePtr);
}
return file_size;
}
Είπα Happy Coding?
Παρόμοια θέματα
» Άρθρο #7: Πίνακες
» Άρθρο #9: Συμβολοσειρές
» Άρθρο #1: Γνωριμία με τη C
» Άρθρο #8: Δείκτες
» Άρθρο #6: Συναρτήσεις
» Άρθρο #9: Συμβολοσειρές
» Άρθρο #1: Γνωριμία με τη C
» Άρθρο #8: Δείκτες
» Άρθρο #6: Συναρτήσεις
C++ Programmer's Corner :: Προγραμματισμός :: C :: Άρθρα
Σελίδα 1 από 1
Δικαιώματα σας στην κατηγορία αυτή
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Δ.Συζήτησης
|
|