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

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

تحكم C

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

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

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

ال

مباني C

ملفات C

C أخرى

دليل مكتبة C

استخدام وظيفة sscanf() و مثال

مكتبة C - <stdio.h>

وظيفة مكتبة C int sscanf(const char *str, const char *format, ...) قراءة المدخلات الم格式مة من السلسلة.

بيان التعريف

هذا هو بيان تعريف sscanf()

int sscanf(const char *str, const char *format, ...)

معلمات

  • str -- هذا هو النوع C للسلسلة، وهو المصدر الذي يبحث عن البيانات به.

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

معلماتوصف
*هذا رمز نجمة اختياري، يوضح أن البيانات يتم قراءتها من تدفق الاستream، ولكن يمكن تجاهله، أي أنه لا يتم حفظه في المعلمات المحددة.
عرضهذا يحدد عدد الأحرف القصوى التي سيتم قراءتها في عملية القراءة الحالية.
معدلاتتحديد حجم مختلف عن نوع الطول الكامل (لـ 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)
نوعحرف واحد، يحدد نوع البيانات التي سيتم قراءتها وطرق قراءتها. يرجى الرجوع إلى الجدول التالي للحصول على التفاصيل.

sscanf 类型说明符:

类型合格的输入参数的类型
c单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。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 字符串中的每个 format 说明符,应指定一个附加参数。如果您想要把 sscanf 操作的结果存储在一个普通的变量中,您应该在标识符前放置引用运算符(&),例如:

        int n;
        sscanf(str, "%d", &n);

返回值

如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

在线示例

下面的示例演示了 sscanf() 函数的用法。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
   int day, year;
   char weekday[20], month[20], dtm[100];
   strcpy(dtm, "Saturday March 15 1999");
   sscanf(dtm, "%s %s %d  %d", weekday, month, &day, &year);
   printf("%s %d, %d = %s\n", month, day, year, weekday);
    
   return(0);
}

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

15 مارس 1999 = يوم السبت

مكتبة C - <stdio.h>