c programming tutorial - בקלות C++
מדריכי תכנות

שיעור 14: קבלת ארגומנטים משורת הפקודה

ב ++C ניתן לקבל ארגומנטים משורת הפקודה. כדי לעשות זאת, עליך ראשית להבין את ההגדרה המלאה של int main(). היא למעשה מקבלת שני ארגומנטים, אחד הוא מספר הארגומנטים בשורת הפקודה, השני הוא רשימה של הארגומנטים של שורת הפקודה.

זה נראה כך:

int main(int argc, char* argv[])

המספר השלם argc הוא ה ARGument Count (ספירת הארגומנטים). זה מספר הארגומנטים שמועברים לפונקציה משורת הפקודה, כולל המסלול לתוכנית ושמה.

המערך של המצביעים לתווים הוא הרישום של כל הארגומנים. argv[0] הוא המסלול המלא לתוכנית כולל שמה. לאחר מכן, כל מספר אלמנט שקטן מ argc הוא ארגומנט של שורת הפקודה. ניתן להשתמש בכל אלמנט של argv בדיוק כמו מחרוזת, או להשתמש ב argv כמערך דו-ממדי.

איך אפשר להשתמש בזה? כמעט כל תוכנית שרוצה שהפרמטרים שלה ייקבעו כאשר היא מתבצעת תשתמש בזה. שימוש נפוץ אחד הוא לכתוב פונקציה שלוקחת את שם הקובץ ומוציאה כפלט את כל הטקסט שלו על המסך.

#include <fstream.h> //Needed to manipulate files
#include <iostream.h>
#include <io.h>      //Used to check file existence

int main(int argc, char * argv[])
{
  if(argc!=2)
  {
    cout<<"Correct input is: filename"; 
    return 0;   
  }             
  if(access(argv[1], 00)) //access returns 0 if the file can be accessed 
  {		   //under the specified method (00)
    cout<<"File does not exist";  //because it checks file existence
    return 0;
  }
  ifstream the_file;  //ifstream is used for file input
  the_file.open(argv[1]); //argv[1] is the second argument passed in 
			 //presumably the file name 
  char x;
  the_file.get(x);  
  while(x!=EOF)  //EOF is defined as the end of the file
  {
    cout<<x;
    the_file.get(x);//Notice we always let the loop check x for the end of   
  }  //file to avoid bad output when it is reached
  the_file.close();  //Always clean up
  return 0;
} 

התוכנית הזו היא פשוטה למדי. היא כוללת את הגרסה המלאה של main. אז היא קודם בודקת לוודא שהמשתמש הוסיף את הארגומנט השני, תיאורטית שם קובץ. היא בודקת זאת, על ידי שימוש בפונקצית ה access, שמקבלת שם קובץ וטיפוס גישה, כאשר 00 הוא בדיקת קיום. זו אינה פונקצית ++C סטנדרטית. היא עשויה לא לעבוד על המהדר שלך. לאחר מכן היא יוצרת מופע של מחלקת קלט הקובץ, והיא פותחת את הארגומנט השני שמועבר ל main. אם לא ראית בעבר את get, זוהי פונקציה סטנדרטית שמשמשת בקלט ופלט בה משתמשים לקלוט תו בודד לתוך התו שמועבר לה, או על ידי החזרת התו. EOF זה פשוט סימון סוף הקובץ, ו x נבדק כדי לוודא שהפלט הבא טוב.




לדף הראשון

<< לדף הקודם

לדף הבא >>