Argc ו- Argv C++

Argc W Argv C



בזמן כתיבת תוכניות C++, כולנו יודעים שהפונקציה 'main()' נחשבת חשובה מאוד מכיוון שאיננו יכולים להרכיב את התוכנית שלנו אם היישום של פונקציה זו חסר. בדיוק כמו כל שאר הפונקציות ב-C++, גם הפונקציה 'main()' מסוגלת לקבל ארגומנטים. עם זאת, ההבדל בין העברת ארגומנטים לפונקציה 'main()' מהעברת ארגומנטים לפונקציות האחרות הוא שאתה צריך להעביר את הארגומנטים דרך שורת הפקודה במקרה הקודם. זה כך מכיוון שהפונקציה 'main()' עצמה היא פונקציית הדרייבר וזו הסיבה שאף פונקציה אחרת לא מסוגלת לקרוא לה ולהעביר אליה ארגומנטים. במאמר זה, נדון בשני הפרמטרים של הפונקציה 'main()', כלומר, 'argc' ו-'argv' ב-C++ באובונטו 20.04.

מה זה Argc ו- Argv ב-C++ באובונטו 20.04?

הפרמטר 'argc' מתייחס לספירת הארגומנטים, בעוד 'argv' מתייחס למערך תווים שמכיל את כל הארגומנטים המועברים לפונקציה 'main()' דרך שורת הפקודה בזמן הפעלת תוכנית ב-C++. כאן, אתה צריך לדעת ש-'argc' תמיד מציג את ספירת הארגומנטים כ-'1' יותר מהמספר האמיתי של הארגומנטים שעברו. הסיבה לכך היא ששם קובץ האובייקט נספר גם כארגומנט שורת פקודה. אתה יכול להעביר את הארגומנטים של שורת הפקודה השייכים לכל סוג נתונים לפונקציה 'main()'. כל מה שאתה צריך לדאוג הוא שהפרמטרים האלה מוזכרים באב הטיפוס של הפונקציה 'main()' שלך אם אתה רוצה לגשת אליהם בתוכה. עם זאת, הפונקציה 'main()' יכולה לעבוד בצורה מושלמת ללא שני הפרמטרים הללו. זה יידון בחלק הבא של מאמר זה, ולאחר מכן נמשיך לשימוש בשני הפרמטרים הללו ב-C++ באובונטו 20.04.

הפונקציה העיקרית ללא Argc ו- Argv ב-C++:

קודם כל, ברצוננו לומר לך שהפונקציה 'main()' ב-C++ יכולה לעבוד בצורה מושלמת גם בלי להשתמש בפרמטרים 'argc' ו-'argv'. זה מתואר בתוכנית C++ הבאה:









יש לנו פונקציה פשוטה של ​​'main()' בתוכנית זו ללא כל ארגומנטים. בתוך פונקציית 'main()' זו, אנו מדפיסים רק הודעה לדוגמה בטרמינל.



לאחר מכן, הידור תוכנית C++ הבסיסית הזו בעזרת הפקודה המוזכרת להלן:





$ g++ CommandLine.cpp –o CommandLine

לאחר מכן, הפעלנו תוכנית זו על ידי הפעלת הפקודה הבאה:



$ . / שורת הפקודה

הפלט של תוכנית C++ פשוטה זו מוצג בתמונה למטה:

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

כעת, ננסה ליישם תוכנית C++ שבה הפונקציה 'main()' מסוגלת לקבל את הפרמטרים 'argc' ו-'argv', עם זאת, לא נעביר אליה את הארגומנטים הללו בזמן הפעלת תוכנית זו מה- מָסוֹף. תוכנית C++ האמורה מוצגת בתמונה הבאה:

בתוכנית C++ זו, הפונקציה 'main()' שלנו מסוגלת לקבל פרמטרים 'argc' ו-'argv'. עם זאת, מכיוון שלא התכוונו להעביר אליו את הערכים הללו בדוגמה הספציפית הזו, השווינו בכוונה את 'argc' ל-'0', כך שכאשר ננסה להדפיס את הערך שלו, הוא לא יחזיר שום ערך זבל. לאחר מכן, הדפסנו את הערך של הפרמטר 'argc' בטרמינל. לאחר מכן, השתמשנו בלולאת 'for' להדפסת כל הארגומנטים של שורת הפקודה בטרמינל.

הידור קוד זה באמצעות הפקודה המוצגת להלן:

$ g++ CommandLine.cpp –o CommandLine

לאחר מכן, כאשר רצינו להפעיל את התוכנית הזו, לא העברנו אליה ארגומנטים של שורת פקודה, כפי שניתן לראות מהפקודה הבאה:

$ . / שורת הפקודה

מהפלט של תוכנית C++ זו המוצגת בתמונה למטה, אתה יכול לראות שלא הועברו ארגומנטים של שורת פקודה לפונקציה זו שבגללם ספירת הארגומנטים הייתה '0' ולא הודפסו ארגומנטים בטרמינל מכיוון שמערך התווים ' argv' היה גם ריק.

הפעלת תוכנית C++ עם ארגומנטים של שורת פקודה מסוג מספר שלם:

כעת, אנו רוצים להפעיל את אותה תוכנית C++ על ידי העברת ארגומנטים של שורת הפקודה מסוג מספר שלם. עם זאת, לפני שנעשה זאת, נשנה מעט את הקוד שלנו כפי שמוצג בתמונה הבאה:

השינוי היחיד שביצענו בקוד זה הוא שהסרנו ממנו את השורה 'argc=0' מכיוון שבדוגמה זו, אנו רוצים להדפיס את המספר האמיתי של הארגומנטים של שורת הפקודה שהועברו לתוכנית זו בזמן הריצה. שאר הקוד זהה בדיוק לזה שבו נעשה שימוש בסעיף למעלה.

הידור מחדש של הקוד שהשתנה באמצעות הפקודה המוצגת להלן:

$ g++ CommandLine.cpp –o CommandLine

לאחר מכן, לביצוע קוד זה, השתמשנו בארגומנטים הבאים של שורת הפקודה:

$ . / שורת הפקודה 1 שתיים 3

זה אומר שהעברנו שלושה ארגומנטים של שורת פקודה מסוג מספר שלם לתוכנית C++ זו תוך כדי הפעלתה, כלומר, 1, 2 ו-3.

הפלט של תוכנית ששונתה זו מוצג בתמונה למטה:

המספר הכולל של הארגומנטים המוחזרים על ידי תוכנית C++ זו הוא '4', כלומר שלושה ארגומנטים שלמים שעברנו + שם קובץ האובייקט. תוכנית זו גם הדפיסה את הרכיבים של מערך התווים 'argv' בטרמינל, כלומר, את הארגומנטים של סוג מספר שלם בפועל שהועברו לתוכנית זו בזמן הביצוע, יחד עם שם התוכנית.

הפעלת תוכנית C++ עם ארגומנטים של שורת פקודה מסוג תו:

כעת, רצינו לראות אם אותה תוכנית C++ עובדת מצוין כאשר אנו מנסים להפעיל אותה על ידי העברת ארגומנטים של שורת פקודה מסוג תו. לשם כך, לא היינו צריכים לשנות את זה יותר. היינו צריכים לבצע אותו רק עם ארגומנטים של שורת הפקודה מסוג תו כדלקמן:

$ . / שורת הפקודה a b c d e f

זה אומר שהעברנו ארגומנטים של שורת פקודה מסוג שישה תווים לתוכנית C++ זו תוך כדי הפעלתה, כלומר, a, b, c, d, e ו-f.

הפלט שנוצר כתוצאה מהעברת ארגומנטים של שורת הפקודה מסוג תו לאותה תוכנית C++ מוצג להלן:

המספר הכולל של הארגומנטים המוחזרים על ידי תוכנית C++ זו הוא '7', כלומר, ארגומנטים בני שישה תווים שעברנו + שם קובץ האובייקט. תוכנה זו גם הדפיסה את הרכיבים של מערך התווים 'argv' בטרמינל, כלומר, ארגומנטים של סוג התווים בפועל שהועברו לתוכנית זו בזמן הביצוע, יחד עם שם התוכנית.

סיכום:

מאמר זה נועד לדיון בשני הארגומנטים של שורת הפקודה, הידועים גם בתור הפרמטרים של הפונקציה 'main()', כלומר, 'argc' ו-'argv'. דיברנו על המשמעות של שני הפרמטרים הללו על ידי ציון השימוש בהם. לאחר מכן, שיתפנו אתכם בכמה דוגמאות שתיארו את השימוש ב-'argc' ו-'argv' ב-C++ באובונטו 20.04. יתרה מכך, גם הבהרנו שגם ללא שימוש בפרמטרים אלו, הפונקציה 'main()' יכולה לעבוד בצורה מושלמת. לכן, ברגע שתקרא את המאמר הזה, תבין את השימוש ב-'argc' ו-'argv' בצורה ברורה מאוד ב-C++.