Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Studies

קריאת קלט מהמשתמש עם scanf

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

int n;
scanf("%d", &n);

הפונקציה תציג למשתמש סמן מהבהב כשתתחיל ותחכה לקלט שלו. המזהה d% אומר לפונקציה שאנחנו מצפים למשתנה אחד מסוג int. המשתמש יכניס קלט ולאחר שילחץ על enter הפונקציה תנסה לעבד את הקלט שלו ולכתוב את התוצאה למשתנה n. שימו לב ל-& לפני n בקריאה לפונקציה - הוא חובה! בהמשך נראה מדוע ומה תפקידו. אפשר לקרוא כמה משתנים מאותה שורה שהכניס המשתמש בצורה הבאה:

char c1, c2;
scanf("%c%c", &c1, &c2);

הערה: נניח שציפינו לקבל מהמשתמש מספר:

int n;
scanf("%d", &n);

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

int n;
int result = scanf("%d", &n);
if (result != 1) {
    // ...
}

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