strtod(3)

الاسم
strtod, strtof, strtold - تحويل سلسلة محارف ASCII إلى عدد فاصل عائم

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stdlib.h>

double strtod(const char *restrict nptr,
              char **_Nullable restrict endptr);
float strtof(const char *restrict nptr,
              char **_Nullable restrict endptr);
long double strtold(const char *restrict nptr,
              char **_Nullable restrict endptr);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

strtof(), strtold():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

الوصف
الدوال strtod() و strtof() و strtold() تحول الجزء الأولي من السلسلة المشار إليها بواسطة nptr إلى تمثيل double و float و long double على التوالي.

الشكل المتوقع للجزء الأولي من السلسلة هو مسافة بيضاء بادئة اختيارية كما يُعرفها isspace(3)، وعلامة جمع ('+') أو طرح ('-') اختيارية، ثم إما (i) عدد عشري، أو (ii) عدد ست عشري، أو (iii) لانهاية، أو (iv) NAN (ليس رقمًا).

يتكون العدد العشري من تسلسل غير فارغ من الأرقام العشرية قد يحتوي على حرف الأساس (النقطة العشرية، تعتمد على الإعدادات المحلية، عادةً '.')، يتبعه اختياريًا أس عشري. يتكون الأس العشري من 'E' أو 'e'، متبوعًا بعلامة جمع أو طرح اختيارية، متبوعًا بتسلسل غير فارغ من الأرقام العشرية، ويشير إلى الضرب في قوة 10.

يتكون العدد الست عشري من "0x" أو "0X" متبوعًا بتسلسل غير فارغ من الأرقام الست عشرية قد يحتوي على حرف الأساس، يتبعه اختياريًا أس ثنائي. يتكون الأس الثنائي من 'P' أو 'p'، متبوعًا بعلامة جمع أو طرح اختيارية، متبوعًا بتسلسل غير فارغ من الأرقام العشرية، ويشير إلى الضرب في قوة 2. يجب وجود حرف الأساس أو الأس الثنائي على الأقل.

اللانهاية هي إما "INF" أو "INFINITY"، بغض النظر عن حالة الأحرف.

NAN هي "NAN" (بغض النظر عن حالة الأحرف) متبوعة اختياريًا بسلسلة محارف، (n-char-sequence)، حيث تحدد n-char-sequence بطريقة تعتمد على التنفيذ نوع NAN (انظر الإصدارات).

قيمة الإرجاع
ترجع هذه الدوال القيمة المحولة، إن وُجدت.

إذا لم يكن endptr NULL، يُخزَّن مؤشر إلى الحرف بعد آخر حرف استُخدم في التحويل في الموقع المشار إليه بواسطة endptr.

إذا لم يُجرَ أي تحويل، يُرجع صفر و (ما لم يكن endptr فارغًا) تُخزَّن قيمة nptr في الموقع المشار إليه بواسطة endptr.

إذا تسببت القيمة الصحيحة في فيضان، يُرجع موجب أو سالب HUGE_VAL أو HUGE_VALF أو HUGE_VALL (وفقًا لنوع الإرجاع وإشارة القيمة)، ويُخزَّن ERANGE في errno.

إذا تسببت القيمة الصحيحة في تدفق سفلي، تُرجع قيمة بمقدار لا يتجاوز DBL_MIN أو FLT_MIN أو LDBL_MIN ويُخزَّن ERANGE في errno.

الأخطاء

ERANGE
    حدث فيضان أو تدفق سفلي.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
strtod(), strtof(), strtold() | سلامة الخيوط | المنطقة (locale) آمنة لتعدد المسالك (MT-Safe)

الإصدارات
في تنفيذ glibc، يُفسَّر n-char-sequence الذي يتبع "NAN" اختياريًا كعدد صحيح (مع بادئة اختيارية '0' أو '0x' لاختيار الأساس 8 أو 16) ليُوضع في مكون الجزء العشري من القيمة المرجعة.

المعايير
C11, POSIX.1-2008.

التاريخ

strtod()
    C89, POSIX.1-2001.

strtof()
strtold()
    C99، POSIX.1-2001.

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

أمثلة
انظر المثال في صفحة دليل strtol(3)؛ استخدام الدوال الموصوفة في صفحة الدليل هذه مشابه.

انظر أيضًا
atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.