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

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

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

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

الarrays في لغة C

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

الstrings في لغة C

مبادئ التركيب C

ملفات C

C أخرى

دليل مكتبة C

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

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

دالة مكتبة C int fscanf(FILE *تدفق, const char *نمذجة, ...) قراءة إدخال منسق من تدفق النص.

إعلان

إعلان fscanf() أدناه.

int fscanf(FILE *تدفق, const char *نمذجة, ...)

معلمات

  • تدفق -- هذا هو دليل الـ FILE، الذي يحدد التدفق.

  • نمذجة -- هذا هو النصوص الكبيرة C، يحتوي على أحد هذه العناصر أو أكثر:حروف الفراغ، وحروف غير الفراغ و معلمات النمذجة.
    شكل معلمات النمذجة [=%[*][عرض][موديفييرز]نوع=]،يوضح التالي تفاصيلها:

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

مفهوم fscanf نوع التوصيف:

النوعالإدخال المقبولنوع المعلمة
cحرف واحد: سيقرأ الحرف التالي. إذا تم تحديد عرض عرض غير 1، فإنه سيقرأ عرض الحروف المحددة وسيقوم بتخزينها في المواقع المتتابعة في المصفوفة، وسيتم إضافة حرف نهاية لا يتم إدراجه في النهاية.char *
dعدد عشري: يمكن أن يكون هناك علامة إضافية أو ناقصية مقدمية.int *
e,E,f,g,Gعدد عشري: يحتوي على نقطة عشرية، ويمكن أن يكون هناك علامة إضافية أو ناقصية مقدمية، ويمكن أن يكون هناك حرف e أو E كحرف نهاية، وعدد عشري. أمثلة صالحة -732.103 و 7.12e4float *
oعدد ثماني.int *
sالنص. سيقرأ النص المتتالي حتى يواجه مسافات (يمكن أن تكون مسافات بيضاء، أو مسافات سريعة أو مسافات تبديل).char *
uعدد عشري غير سالب.unsigned int *
x,Xعدد عشري.int *
  • المعلمات الإضافية -- بناءً على format السلسلة المختلفة، قد تحتاج الدالة إلى سلسلة من المعلمات الإضافية، كل معلمة تحتوي على قيمة يجب إدراجها، وتستبدل كل % في format المعلمة. يجب أن يكون عدد المعلمات الإضافية متساوياً مع عدد %.

النوع العائد

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

نموذج تفاعلي

النموذج التوضيحي أدناه يظهر استخدام دالة fscanf().

#include <stdio.h>
#include <stdlib.h>
int main()
{
   char str1[10], str2[10], str3[10];
   int year;
   FILE * fp;
   fp = fopen("file.txt", "w+");
   fputs("نحن في عام 2009", fp);
   
   rewind(fp);
   fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
   
   printf("قراءة نص 1 |%s|\n", str1);
   printf("قراءة نص 2 |%s|\n", str2);
   printf("قراءة نص 3 |%s|\n", str3);
   printf("قراءة عدد |%d|\n", year);
   fclose(fp);
   
   return(0);
}

دعونا نعلم ونشغل البرنامج المذكور أعلاه، مما سيؤدي إلى إنتاج النتيجة التالية:

قراءة 字符串1 |We|
قراءة 字符串2 |are|
قراءة 字符串3 |in|
قراءة عدد |2009|

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