דוד י מלאן: בואו ניקח דברים צעד אחד קדימה, עכשיו. נניח שאני לא רק רוצה כדי להדפיס את כל תכניתו שלי טיעוני שורת הפקודה. אבל אני, במקום, רוצה להדפיס את כל תווים בודדים בכל אחד מ טיעוני שורת הפקודה שלי, לכל אחד קו, כך שעם הפעלה זו תכנית, אני פשוט רואה זרם של דמויות על המסך, כי הם ביחד מהרצף שלי הארגומנטים בשורת הפקודה. ובכן, איך אני יכול לעשות את זה? אני יכול לשמור על שלמותה הלולאה שלי מלפני לפיה אני איטרטיבי מi עד Argc על מנת לשלב מעל שורת פקודת טיעונים עצמם. אבל עכשיו, בתוך כל איטרציה של ש לולאה, אני צריך לחזר עכשיו מעל כל של התווים או תווים במחרוזת ספציפית. אז כדי לעשות את זה, אני צריך לולאה אחת יותר. בואו נוסיף את זה. עבור int, בואו נקראים לזה j, שווה 0. עכשיו אני הולך לצריך לשלב עד האורך של מחרוזת נוכחית בargv. אז תן לי לתת לעצמי עוד מקומי משתנה, אנחנו קוראים לזה n, ולהגדיר כי שווה לאורך המחרוזת של טיעון הנוכחי, שהולך להיות מצא בסוגר argv i פסיק. עכשיו תן לי לחזר מj עד עד אחרי n על ידי להגדיל בכל איטרציה. בואו עכשיו להדפיס את הפרט דמויות על המסך. Printf% c הפעם אחריו חדש קו, ציטוט קרוב, פסיק, ועכשיו אני צריך אופי j-th בויכוח i-ה. אז כדי לקבל את זה, אני פשוט לא יכול תציין סוגר ARV i ל לקבל את טענת i-ה. ואז אני יכול לצלול ברמה אחת עמוק יותר ולעשות את האינדקס המשני של j סוגר, קרובים סוגריים, פסיק, שמור. ובואו עכשיו לקמפל ו להפעיל את התכנית. הפוך ARGV2 - לא בדיוק מה שציפיתי. בואו לגלול עד הראשון של הודעות שגיאה. ובאדום כאן, אנו רואים שגיאה, פונקצית ספרייה במרומז הכרזה strlen עם סוג - הו, חכה רגע. זו הפעם הראשונה שאני משמש strlen, ואני לא ציפיתי רוצה את זה בהתחלה, כך שאני לא כללתי קובץ הכותרת שמצהיר פונקצית אורך מחרוזת. אז בחלק העליון של התיק שלי, כזכור, יש לי CS50.h. יש לי io.h. הסטנדרטי אבל מתברר, ואני יודע את זה מ לקרוא את התיעוד, כי אני צריך קובץ כותרת שלישי אם אני, אכן, רוצה להשתמש בפונקצית strlen. הפונקציה שהכריזה בstring.h. בואו לשמור את הקובץ, לקמפל ולהריץ. והפעם, אנחנו עושים לא רק רואה כל אחד מהטיעונים. אנחנו במקום לראות כל אחד מהטיעונים תו אחד בכל פעם.