מבוא:
Printf() ו Scanf() הן פונקציות ספרייה מובנות בשפת C שמבצעות קלט מעוצב ו פלט מעוצב פונקציות. פונקציות אלו מוגדרות ומוצהרות ב קובץ הכותרות stdio.h . ה 'ו' ב printf ו scanf מייצג 'מעוצב' . אז, שתי הפונקציות printf() ו scanf() השתמש בקודים בתוך מחרוזת פורמט כדי לציין כיצד יש לעצב ערכי פלט או קלט. עלינו לייבא את קובץ הכותרת לשימוש printf() ו scanf() :
#include
במאמר זה, נדון בהבדל בין printf() ל-scanf(), אך לפני שנדון בהבדלים, עלינו לדעת על ה-printf() ו- scanf() עם התחביר והדוגמאות שלהם.
Printf():
זה הדפסים כל דבר שביניהם מרכאות כפולות עם מפרטי פורמט %c, %d,%f, וכו', כדי להראות ערך של משתנה או קבוע ויכולים להיות גם תווי רצף בריחה כמו , ל שורה חדשה, ו לשונית אופקית , בהתאמה.
תרשים ספרות רומיות 1 100
תחביר:
printf('(string) %format_specifier (string)',variable);
Scanf():
זה מאפשר לנו לקרוא ערך אחד או יותר שהזין המשתמש דרך המקלדת בקונסולה. אנחנו יכולים להציב כמה שיותר מפרטי פורמטים כמה כניסות שנרצה עם או בלי פורמט.
תחביר:
scanf(%format_specifier, &pointer_to_variable);
מחרוזת מפרט פורמט:
בפרמטר הראשון של printf ו scanf , אנחנו עוברים מחרוזת פורמט אוֹ מחרוזת מפרט פורמט , ואנו מציינים איזה סוג ערך המשתמש הולך להזין.
סוג מידע | הֲמָרָה | מחרוזת פורמט |
---|---|---|
מספר שלם | מספר שלם קצר | %d או % i |
קצר ללא חתימה | % ב | |
חתום ארוך | % ld | |
מזמן לא חתום | % lu | |
הקסדצימלי ללא סימן | % איקס | |
אוקטלי לא חתום | %O | |
אמיתי | לָצוּף | % f או % g |
לְהַכפִּיל | %lf | |
דמות חתומה | %c | |
char לא חתום | %c | |
חוּט | %s |
לדוגמה, אם משתמש נכנס עשרים כקלט, כמו עשרים הוא ערך מספר שלם עשרוני , אנו מציינים את כל ערכי המספרים השלמים העשרוניים ב-C באמצעות ה- מפרט פורמט %d . באופן דומה, ערכים צפים מצוינים באמצעות %f .
קוד בסיסי עבור Printf() ו-Scanf():
דוגמה 1:
#include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d sub = %d mul = %d', sum, sub, mul); return 0; }
תְפוּקָה:
המרת nfa ל-dfa
Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48
הֶסבֵּר:
בתוכנית לעיל, אנו משתמשים ב- scanf() כדי לקרוא את הקלט מהמסוף ולאחסן אותם במשתנים a & b. לאחר מכן, אנו מבצעים פעולות אריתמטיות כמו חיבור , חִסוּר , ו כֶּפֶל ובהמשך לאחסן את התוצאות ב- שלושה משתנים חדשים (Sum, Sub, Mul). לבסוף, על ידי שימוש ב- הפונקציה printf() , אנו מדפיסים את התוצאות.
דוגמה 2:-
#include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; }
בתוכנית לעיל, scanf() קורא שני כניסות מהתוכנית למרות שאנו מעבירים משתנה אחד בגלל שציינו שני מפרטי פורמטים . זכור תמיד, אין scanf()/printf() כל ה מפרטי פורמטים שנעבור צריך להיות זהה, אחרת אנו עלולים לקבל כמה שגיאות זמן ריצה בלתי צפויות.
דוגמה 3:
int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; }
תְפוּקָה:
5 Execution finished...
הֶסבֵּר:
בתוכנית לעיל, scanf() קורא רק קלט אחד מהמשתמש מכיוון שציינו רק מפרט פורמט אחד . אז מהדוגמה הזו, אנו מסיקים שאף אחת מהכניסות לא תילקח בהתאם למספר של מפרטי פורמטים .
דוגמה 4:
#include int main() { int a; scanf('%d', a); printf('Execution finished'); }
תְפוּקָה:
6 Segmentation fault
הֶסבֵּר:
בתוכנית לעיל, אנו מעבירים את הערך של משתנה ל scanf() במקום הכתובת המשתנה. זה יוביל לא שגיאת זמן ריצה . בלינוקס, נקבל שגיאת תקלת פילוח.
aws היסט לאדום
דוגמה 5:
#include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); }
תְפוּקָה:
the value of a = 10, the value of b = 20
הֶסבֵּר:
בתוכנית לעיל, מתי printf סורק את מחרוזת הפורמט, היא תחליף את מפרטי פורמט (%d) עם הערכים האמיתיים שאליהם אנו עוברים printf() . כלומר, מפרט הפורמט הראשון יוחלף בערך הראשון שנעביר printf(), וכולי.
הבדלים בסיסיים בין Printf() ל-Scanf()
כמה הבדלים בין printf ל-scanf הם: