logo

الفرق بين printf() و scanf() في C

مقدمة:

برينتف () و سكانف() هي وظائف مكتبة يحمل في ثناياه عوامل في لغة C التي تؤدي المدخلات المنسقة و الإخراج المنسق المهام. يتم تعريف هذه الوظائف والإعلان عنها في ملف رأس stdio.h . ال 'F' في printf و scanf تمثل 'منسق' . لذلك، كل من الوظائف برينتف () و سكانف () استخدم الرموز ضمن سلسلة تنسيق لتحديد كيفية تنسيق قيم الإخراج أو الإدخال. نحن بحاجة إلى استيراد ملف الرأس لاستخدامه برينتف () و سكانف () :

 #include 

في هذه المقالة، سنناقش الفرق بين printf() وscanf()، ولكن قبل مناقشة الاختلافات، يجب أن نتعرف على printf() وscanf() مع تركيبهما وأمثلة.

برينتف ():

هو - هي مطبوعات أي شيء بين التنصيص مع محددات التنسيق %c، %d،%f، إلخ، لإظهار قيمة متغير أو ثابت ويمكن أن تحتوي أيضًا على أحرف تسلسل هروب مثل ن، ر ل خط جديد، و مساحة أفقية ، على التوالى.

بنية 32 بت مقابل 64 بت

بناء الجملة:

 printf('(string) %format_specifier (string)',variable); 

سكانف ():

يسمح لنا بقراءة قيمة واحدة أو عدة قيم أدخلها المستخدم من خلال لوحة المفاتيح في وحدة التحكم. يمكننا وضع أكبر عدد ممكن محددات التنسيق العديد من المدخلات التي نريدها مع أو بدون تنسيق.

بناء الجملة:

 scanf(%format_specifier, &pointer_to_variable); 

سلسلة محدد التنسيق:

في المعلمة الأولى printf و scanf ، لقد نجحنا سلسلة التنسيق أو سلسلة محدد التنسيق ونحدد نوع القيمة التي سيدخلها المستخدم.

نوع البيانات تحويل سلسلة التنسيق
عدد صحيح عدد صحيح قصير %d أو % أنا
قصيرة غير موقعة ٪ في
وقعت منذ فترة طويلة % د
طويلة غير موقعة % لو
سداسي عشري غير موقعة % س
ثماني غير موقعة %O
حقيقي يطفو % و أو % ز
مزدوج %lf
حرف موقع
حرف غير موقعة
خيط ٪س

على سبيل المثال، إذا دخل المستخدم عشرين كمدخل، كما عشرين هو قيمة عدد صحيح عشري ، نحدد كافة قيم الأعداد الصحيحة العشرية في لغة 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; } 

انتاج:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

توضيح:

في البرنامج أعلاه نستخدم سكانف () لقراءة المدخلات من وحدة التحكم وتخزينها في المتغيرات أ & ب. وبعد ذلك نقوم بإجراء العمليات الحسابية مثل إضافة , الطرح ، و عمليه الضرب ثم قم بتخزين النتائج لاحقًا في ملف ثلاثة متغيرات جديدة (Sum، Sub، Mul). وأخيرا، باستخدام وظيفة برينتف (). ، نقوم بطباعة النتائج.

ابن آوى مقابل الذئب

مثال 2:-

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

في البرنامج أعلاه سكانف () يقرأ مدخلين من البرنامج على الرغم من أننا نقوم بتمرير متغير واحد لأننا حددنا ذلك اثنين من محددات التنسيق . تذكر دائما، في سكانف ()/برينتف () كل ال محددات التنسيق التي نمررها يجب أن تكون هي نفسها، وإلا فقد نتلقى بعض أخطاء وقت التشغيل غير المتوقعة.

مثال 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

انتاج:

 5 Execution finished... 

توضيح:

في البرنامج أعلاه سكانف () يقرأ إدخالاً واحدًا فقط من المستخدم لأننا حددنا ذلك فقط محدد تنسيق واحد . إذن من هذا المثال، نستنتج أنه لن يتم أخذ أي من المدخلات اعتمادًا على عدد العناصر محددات التنسيق .

مثال 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

انتاج:

 6 Segmentation fault 

توضيح:

في البرنامج أعلاه، نقوم بتمرير قيمة المتغير إلى سكانف () بدلاً من العنوان المتغير. سيؤدي إلى أ خطا وقت التشغيل . في Linux، سنحصل على خطأ خطأ في التجزئة.

جافا لامدا

مثال 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() وScanf()

بعض الاختلافات بين printf وscanf هي: -

    وظيفة برينتف (). يقوم بإخراج البيانات إلى الإخراج القياسي، أي إلى وحدة التحكم. في المقابل، وظيفة سكانف (). يقرأ البيانات من المدخلات القياسية، أي أجهزة الإدخال برينتف () نادرا ما يستخدم المؤشر في حالات قليلة ولكن سكانف () يستخدم دائمًا مؤشرًا لتعيين قيمة للمتغير المحدد. برينتف () و سكانف () كلاهما لهما نفس نوع الإرجاع عدد صحيح . ال برينتف () تقوم بإرجاع عدد الأحرف التي تمت طباعتها بنجاح على وحدة التحكم، بينما سكانف () عائدات 0,1 أو EOF بناءً على محدد التنسيق المقدم.