ANSI C ، عدد صحيح إلى السلسلة بدون وظائف متنوعة

StackOverflow https://stackoverflow.com/questions/2138209

  •  22-09-2019
  •  | 
  •  

سؤال

أنا أعمل حاليًا مع PLC يدعم ANSI C ، ولكنه يستخدم نكهته الخاصة لمجمول GNU ، والذي لا يجمع أي وظائف متنوعة وأشياء مثل ITOA. لذلك باستخدام Sprintf & Co. ليس خيارًا لتحويل الأعداد الصحيحة إلى سلاسل. هل يمكن لأي شخص أن يرشدني إلى موقع حيث يتم سرد تطبيق قوي من ITOA أو ينشر خوارزمية مناسبة هنا؟ شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

هذا من K&R:

void itoa(int n, char s[])
{
    int i, sign;

    if ((sign = n) < 0)  /* record sign */
        n = -n;          /* make n positive */
    i = 0;
    do {       /* generate digits in reverse order */
        s[i++] = n % 10 + '0';   /* get next digit */
    } while ((n /= 10) > 0);     /* delete it */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
} 

reverse() فقط يعكس سلسلة.

نصائح أخرى

فقط من أجل الاكتمال وكمرجع للآخرين الذين قد يتعثرون على الموضوع ، أضفت هذا الرابط إلى تنفيذ متكرر لـ ITOA itoa بشكل متكرر الذي أحبه بسبب جماله البسيط ، لكن لا يمكنني استخدامه لنظامي المستهدف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top