English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل تعليمي أساسي للغة C

تحكم عملية لغة C

الوظائف في لغة C

المتجهات في لغة C

المراجع في لغة C

النصوص في لغة C

مباني لغة C

ملفات لغة C

C أخرى

دليل مرجعي للغة C

استخدام دالة scanf() من مكتبة C و مثال

مكتبة القياسية C - <stdio.h>

دالة مكتبة C int scanf(const char *format, ...) قراءة الإدخال الم格式ات المحدد من المدخل القياسي stdin.

الإعلان

إليك إعلان دالة scanf().

int scanf(const char *format, ...)

المعامل

  • format -- هذا هو 字符串 C، يحتوي على أحد العناصر التالية أو أكثر:حرف الفراغ، حرف غير فراغ و معرفات format.

شكل معرفات format:

[=%[*][عرض][معلمات]نوع=]

يتم شرح ذلك بشكل تفصيلي كما يلي:

المعاملالوصف
*هذا هو علامة النجمة الاختيارية، مما يعني أن البيانات يتم قراءتها من التدفق stream، ولكن يمكن تجاهلها، أي أنها لا يتم تخزينها في المعامل المحدد.
عرضهذا يحدد عدد الحروف الأقصى التي سيتم قراءتها في عملية القراءة الحالية.
المعلماتتحديد حجم مختلف من البيانات التي تشير إليها المعلمات الإضافية للنوع غير الكامل (لـ d، i و n) أو النوع غير السالب (لـ o، u و x) أو النوع العشري (لـ e، f و g) h: طول قصير (لـ d، i و n) أو طول غير سالب قصير (لـ o، u و x) l: طول كامل (لـ d، i و n) أو طول غير سالب كامل (لـ o، u و x) أو ثنائي (لـ e، f و g) L: نوع طول الثنائي (لـ e، f و g)
النوعحرف، يحدد نوع البيانات التي سيتم قراءتها وكيفية قراءتها. يرجى الرجوع إلى الجدول التالي.

موضح بالتفصيل نوع scanf:

نوعالمستخدم الجيدنوع المعامل
%a、%A قراءة قيمة عشريه (محدود للغاية C99).float *
%cحرف واحد: قراءة الحرف التالي. إذا تم تحديد عرض عرض غير 1، فإن الدالة ستقرأ عرض الحروف، وستخزن الحروف في المواقع المتتالية في المجموعة، و لن يتم إضافة حرف فراغ في النهاية.
%dالعدد العشري: يمكن أن يكون الرمز المقدم أو الناقص + أو - غير مطلوب.int *
%e、%E、%f、%F、%g、%Gالعدد العشري: يحتوي على نقطة عشرية، ويمكن أن يكون هناك رمز مقدم أو ناقص + أو -، ويمكن أن يكون هناك رمز خلفي e أو E، وعدد عشري. أمثلة صحيحة -732.103 و 7.12e4float *
%iقراءة العدد العشري، العددي العشري، العددي العشري .int *
%oعدد عشري.int *
%sالسلسلة. سيقرأ الحروف المتتالية حتى يصل إلى حرف فراغ (يمكن أن يكون الحرف الفراغ هو الفراغ أو الرمز الناتج أو الرمز التبديلي).
㩵nعدد عشري غير سالب.unsigned int *
%x、%Xعدد عشري.int *
%p قراءة إشارة المرجع . 
%[] التمشيط مجموعة الحروف . 
%% قراءة %. 
  • المعلمات الإضافية -- حسب قيمة format المختلفة، قد تحتاج الدالة إلى سلسلة من المعلمات الإضافية، حيث يحتوي كل معامل على قيمة يجب أن يتم إدراجها، وتستبدل كل % في معامل format المحدد. يجب أن يكون عدد المعلمات الإضافية متساوياً مع عدد % المحدد.

القيمة المعدة

إذا كانت النتيجة ناجحة، فإنها تعود عدد الأرقام التي تم تطابقها وتخصيصها. إذا وصل إلى نهاية الملف أو حدث خطأ في القراءة، فإنها تعود EOF.

مثال عبر الإنترنت

في هذا المثال، يتم عرض استخدام وظيفة scanf().

#include<stdio.h>
int main(void) 
{ 
    int a,b,c; 
    printf("ادخل ثلاثة أرقام:");
    scanf("%d%d%d",&a,&b,&c); 
    printf("%d,%d,%d\n",a,b,c);
    return 0; 
}

لنقوم بتشغيل البرنامج أعلاه وسيظهر النتيجة التالية في الوضع التفاعلي:

ادخل ثلاثة أرقام: 1 2 3
1,2,3

شرح التحليل:

  • 1ًا&a،&b،&c; فيها، & هو عمود التوجيه، يحصل على عنوان ذاكرة هذه الثلاثة المتغيرات.
  • 2ًا%d%d%d يتم إدخال ثلاثة أرقام بنمط العشرية. يمكن استخدام فراغات أو مسافات أو مفتاح التبديل أو مفتاح النهاية للفصل بين البيانات.
إذا كنت تستخدم , لتقسيم الإدخال %d, عند إدخال، يجب إضافة ,:
#include<stdio.h>
int main(void)
{
    int a,b,c;
    printf("ادخل ثلاثة أرقام:");
    scanf("%d, %d, %d",&a,&b,&c);
    printf("%d, %d, %d\n",a,b,c);
    return 0;
}

لنقوم بتشغيل البرنامج أعلاه وسيظهر النتيجة التالية في الوضع التفاعلي:

ادخل ثلاثة أرقام: 1, 2, 3
1, 2, 3

ملاحظة:، يجب أن يتبع الرقم مباشرة، لا يمكن أن يكون هناك فراغ بين الرقم و،.

عند إدخال %c، الفراغات والرمز المحدد كـ\"مسموح بهما كحروف.

#include<stdio.h>
int main(void)
{
    char a,b,c;
    printf("ادخل ثلاثة أحرف:");
    scanf("%c%c%c",&a,&b,&c); 
    printf("%c,%c,%c\n", a,b,c);
    return 0;
}

لنقوم بتشغيل البرنامج أعلاه وسيظهر النتيجة التالية في الوضع التفاعلي:

$ ./a.out 
ادخل ثلاثة أحرف: run
r,u,n
$ ./a.out 
ادخل ثلاثة أحرف: r u n
r, ,u

في هذا المثال، يتم عرض استقبال الأحرف:

#include <stdio.h>
int main()
{
   char str1[20], str2[30];
   printf("ادخل اسم المستخدم الرجاء:");
   scanf("%s", str1);
   printf("ادخل موقعك الرجاء:");
   scanf("%s", str2);
   printf("ادخل الاسم المستخدم:%s\n", str1);
   printf("ادخل الموقع:%s", str2);
   return(0);
}

لنقوم بتشغيل البرنامج أعلاه وسيظهر النتيجة التالية في الوضع التفاعلي:

الرجاء إدخال اسم المستخدم: admin
الرجاء إدخال موقعك: ar.oldtoolbag.com
اسم المستخدم المدخل: admin
الموقع المدخل: ar.oldtoolbag.com

مكتبة القياسية C - <stdio.h>