Itoa (Си)

Функция itoa в языке программирования C возвращает запись указанного целого числа в позиционной системе счисления с заданным основанием (например число 10 в системе счисления с основанием 7 записывается как "13"). Эта функция не определена ни в одном стандарте языка Си, но зачастую компиляторы поддерживают её за счет использования заголовка <stdlib.h>, так как она весьма близка по смыслу к стандартной библиотечной функции atoi.

void* itoa(int input, char *buffer, int radix)

itoa принимает передаваемое целое число input и возвращает его запись в системе счисления по основанию radix (которое должно принимать значения от 2 до 36). Алфавит вывода состоит из 36 знаков - сначала 10 арабских цифр, затем 26 букв стандартной латиницы. Полученное число (последовательность цифр основания radix) записывается в буфер вывода buffer.

В зависимости от реализации, itoa может возвращать указатель на первый символ в буфере buffer, или может быть создана таким образом, чтобы передавать нуль-buffer, в результате чего функция возвращает длину строки, которая была записана в корректный buffer.

Для преобразования числа в строку с основанием 8 (восьмеричная), 10 (десятичная) или 16 (шестнадцатеричная система счисления) альтернативой, совместимой со стандартом, является использование стандартной библиотечной функции sprintf.

Реализация от Кернигана и Ритчи

Функция itoa появилась в первом издании книги Брайана Кернигана и Дениса Ритчи Язык программирования Си, на странице 60. Второе издание Язык программирования Си («K&R2») на стр. 64 содержало нижеследующую реализацию itoa. В книге отмечено несколько вопросов, связанных с этой реализацией, включая тот факт, что она не в состоянии корректно обработать самое маленькое отрицательное число −2длина машинного слова в битах-1.[1]

 /* itoa:  конвертируем n в символы в s */
 void itoa(int n, char s[])
 {
     int i, sign;
 
     if ((sign = n) < 0)  /* записываем знак */
         n = -n;          /* делаем n положительным числом */
     i = 0;
     do {       /* генерируем цифры в обратном порядке */
         s[i++] = n % 10 + '0';   /* берем следующую цифру */
     } while ((n /= 10) > 0);     /* удаляем */
     if (sign < 0)
         s[i++] = '-';
     s[i] = '\0';
     reverse(s);
 }

Функция reverse реализована двумя страницами ранее:

 #include <string.h>
 
 /* reverse:  переворачиваем строку s на месте */
 void reverse(char s[])
 {
     int i, j;
     char c;
 
     for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
         c = s[i];
         s[i] = s[j];
         s[j] = c;
     }
 }

Функция itoa (а также схожая с ней функция ftoa, конвертирующая числа с плавающей запятой в строку) указана в первой версии руководства по Unix.[2] В отличие от приведённых выше версий, библиотечная Unix-версия имела интерфейс, примерно похожий на

void itoa(int input, void (*subr)(char))

и вызывала подпрограмму обратного вызова subr для каждого символа в строке вывода, что устраняло необходимость в большом буфере для хранения сразу всей строки.

См. также

Примечания

  1. Решение этого вопроса смотри «K&R2 solutions» Архивная копия от 3 марта 2010 на Wayback Machine на сайте clc-wiki.net.
  2. «Unix Programmer’s Manual» Архивировано 18 мая 2008 года., 3 ноября 1971. Глава «Library routines» Архивировано 9 мая 2008 года..

Ссылки

  • string itoa(int n) — Функция C++ конвертации int в string (без утечек памяти!)  (англ.)
  • How do I use itoa() with GCC? — реализации itoa() с тестами производительности  (англ.)
  • lexical_cast — альтернатива для C++, часть библиотек boost  (англ.)
  • modp_numtoa — альтернатива для C/C++ для преобразования целых и чисел с плавающей точкой в символы.  (англ.)
  • Good old Integer To Ascii conversion: itoa — Еще одна достаточно быстрая реализация itoa для различных типов данных, плюс некоторая обертка в стиле boost в виде специализаций шаблона boost::lexical_cast  (англ.).
  • Описание itoa  (рус.)

Read other articles:

Anjing padang rumput ekor hitam Rekaman Status konservasi Risiko Rendah (IUCN 3.1)[1] Kemungkinan aman (NatureServe)[2] Klasifikasi ilmiah Domain: Eukaryota Kerajaan: Animalia Filum: Chordata Kelas: Mammalia Ordo: Rodentia Subordo: Sciuromorpha Famili: Sciuridae Genus: Cynomys Spesies: Cynomys ludovicianusOrd, 1815 Peta persebaran Anjing padang rumput ekor hitam (Cynomys ludovicianus) adalah spesies hewan pengerat dari keluarga Sciuridae (bajing) yang ditemukan di D...

 

Эту страницу предлагается переименовать в «Тюрк-шахи».Пояснение причин и обсуждение — на странице Википедия:К переименованию/24 августа 2023. Пожалуйста, основывайте свои аргументы на правилах именования статей. Не удаляйте шаблон до подведения итога обсуждения. Переи�...

 

Pengadilan Militer Tinggi (disingkat Dilmilti) adalah pengadilan yang bertugas untuk memeriksa dan memutus pada tingkat pertama perkara pidana dan sengketa Tata Usaha Militer sebagaimana ditentukan dalam pasal 41 Undang-Undang RI Nomor 31 Tahun 1997 yakni prajurit yang berpangkat Mayor ke atas. Selain itu, Pengadilan Militer Tinggi juga memeriksa dan memutus pada tingkat banding perkara pidana yang telah diputus oleh Pengadilan Militer dalam daerah hukumnya yang dimintakan banding. Nomenklatu...

Costa v ENELMahkamah EropaDiputuskan 15 Juli 1964Nama lengkap kasusFlaminio Costa v E.N.E.L.Nomor kasus6/64,Negara asal pemohonItaliaKronologi prosedurGiudice conciliatore di Milano, Sezione I, ordinanza del 16 January 1964 21 January 1964 (RG 1907/63)Komposisi pengadilanHakim-PelaporRobert LecourtHakim UmumMaurice Lagrange Flaminio Costa v ENEL (1964) adalah putusan Mahkamah Eropa yang menetapkan bahwa hukum Uni Eropa akan mengesampingkan hukum nasional apabila terjadi konflik di antara kedu...

 

Traditional province in the north of Ireland For other uses, see Ulster (disambiguation). PlaceUlster Ulaidh (Irish) Ulstèr (Ulster-Scots) FlagCoat of armsSovereign statesUnited KingdomRepublic of IrelandCountiesAntrim (UK)Armagh (UK)Cavan (ROI) Donegal (ROI)Down (UK)Fermanagh (UK)Londonderry (UK)Monaghan (ROI)Tyrone (UK)Government • MEPs[b]1 Sinn Féin MEP 2 Fine Gael MEPs 1 Independent MEP • UK MPs and RoI TDs8 DUP MPs 7 Sinn Féin MPs 2 SDLP MPs 1 Alliance MP ...

 

American actor (born 1949) This article is about the American actor. For the album, see Jeff Bridges (album). For the Colorado politician, see Jeff Bridges (politician). Jeff BridgesBridges at the 2017 San Diego Comic-ConBornJeffrey Leon Bridges (1949-12-04) December 4, 1949 (age 74)Los Angeles, California, U.S.OccupationsActorfilm producersingerYears active1951–presentSpouse Susan Geston ​(m. 1977)​Children3Parent(s)Lloyd BridgesDorothy BridgesFamilyB...

French handball club This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Mérignac Handball – news · newspapers · books · scholar · JSTOR (June 2020) (Learn how and when to remove this message) Mérignac HandballFull nameMérignac HandballFounded1964ArenaSalle Pierre de Coubertin, Mérignac, GirondeCapacity...

 

Tir à l'arc aux Jeux olympiques Généralités Sport Tir à l'arc 1re apparition Paris, 1900 Organisateur(s) CIO / WA Éditions 17e en 2021 Périodicité Tous les 4 ans Épreuves 5 en 2021 Palmarès Plus titré(s) Corée du Sud Pour la compétition en cours voir : Tir à l'arc aux Jeux olympiques d'été de 2020 modifier Le tir à l'arc a fait sa première apparition lors des Jeux olympiques d'été de 1900. Absent du programme de 1924 à 1968, le tir à l'arc a été réintro...

 

American politician (born 1964) Not to be confused with his father, the former governor of New Hampshire John H. Sununu. John E. SununuUnited States Senatorfrom New HampshireIn officeJanuary 3, 2003 – January 3, 2009Preceded byBob SmithSucceeded byJeanne ShaheenMember of the U.S. House of Representativesfrom New Hampshire's 1st districtIn officeJanuary 3, 1997 – January 3, 2003Preceded byBill ZeliffSucceeded byJeb Bradley Personal detailsBornJohn Edward Sunun...

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要編修,以確保文法、用詞、语气、格式、標點等使用恰当。 (2013年8月6日)請按照校對指引,幫助编辑這個條目。(幫助、討論) 此條目剧情、虛構用語或人物介紹过长过细,需清理无关故事主轴的细节、用語和角色介紹。 (2020年10月6日)劇情、用語和人物介紹都只是用於了解故事主軸,輔助�...

 

16th race of the 2022 ARCA Menards Series 2022 Rust-Oleum Automotive Finishes 100 Race details[1][2] Race 16 of 20 of the 2022 ARCA Menards Series Date September 5, 2022Official name 42nd Annual Rust-Oleum Automotive Finishes 100Location DuQuoin State Fairgrounds Racetrack, Du Quoin, IllinoisCourse Permanent racing facility1 mi (1.6 km)Distance 78 laps, 78 mi (126 km)Scheduled Distance 100 laps, 100 mi (160 km)Average speed 58.354 mph (93.912 km/h)Pole positionDriver...

 

Senegalese footballer Papiss Cissé Cissé playing for Newcastle United in 2013Personal informationFull name Papiss Demba Cissé[1]Date of birth (1985-06-03) 3 June 1985 (age 39)[2]Place of birth Dakar, SenegalHeight 1.81 m (5 ft 11 in)[3]Position(s) ForwardYouth career Génération FootSenior career*Years Team Apps (Gls)2000–2004 Douanes Dakar 26 (23)2004–2010 Metz 95 (36)2005–2006 → Cherbourg (loan) 28 (19)2008–2009 → Châteauroux (loa...

This article is about the first 2001 soundtrack. For the second 2001 soundtrack, see More Fast and Furious. For the 2009 soundtrack, see Fast & Furious (soundtrack). For other soundtracks, see The Fast and the Furious § Soundtracks. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: The Fast and the Furious soundtrack – ...

 

Journal of the History of Medicine and Allied SciencesDisciplineHistory of medicineLanguageEnglishEdited byChristopher CrennerPublication detailsHistory1946-presentPublisherOxford University PressFrequencyQuarterlyOpen accessHybridImpact factor0.714 (2011)Standard abbreviationsISO 4 (alt) · Bluebook (alt1 · alt2)NLM (alt) · MathSciNet (alt )ISO 4J. Hist. Med. Allied Sci.IndexingCODEN (alt · alt2) · JSTOR (alt) &#...

 

American politician Paul Renner103rd Speaker of the Florida House of RepresentativesIncumbentAssumed office November 22, 2022Preceded byChris SprowlsMember of the Florida House of RepresentativesIncumbentAssumed office April 8, 2015Preceded byTravis HutsonConstituency24th district (2015–2022)19th district (2022–present) Personal detailsBornPaul Marvin Renner (1967-03-21) March 21, 1967 (age 57)Atlanta, Georgia, U.S.Political partyRepublicanSpouseAdrianaEducationDavidson Colle...

Governing bodies of legislative branch of Spanish government Politics of Spain Constitution Constitution Constitutional Court President Cándido Conde-Pumpido Vice President Inmaculada Montalbán Huertas Constitutional history Spanish transition to democracy Human rights Taxation Law Abortion Nationality Capital punishment Life imprisonment The CrownRoyal Household The Monarch (list) Felipe VI Heir presumptive (list) Leonor, Princess of Asturias Royal family Succession to the Spanish throne E...

 

「大飢饉」はこの項目へ転送されています。本宮ひろ志の漫画作品については「大飢饉 (漫画)」をご覧ください。 ロシアの飢饉(1921年) ポータル 災害 飢饉(ききん、英: famine)とは、何らかの要因によりその集落に住む住人が飢餓状態に陥ることを指す。狭義においては、一地域における死亡率を急激に上げるような極端な食料不足の事態を指すことが多い。...

 

خنتي إمنتيو اسمه في الهيروغليفية أو أو تعديل مصدري - تعديل   خنتي إمنتيو، و أيضا خنتي إمنتي، هو إله مصري قديم كان اسمه يُستخدم أيضًا كلقب لـأوزيريس وأنوبيس. الاسم يعني المتقدم على الغربيين أو رئيس الغربيين، حيث يشار بالغربيين إلى الموتى.[1] كان خنتي إمنتيو يصور كإله ب�...

Местный советЙесуд-ха-Маалаיְסוּד הַמַּעֲלָה 33°03′22″ с. ш. 35°36′15″ в. д.HGЯO Страна  Израиль Округ Северный Мэр Герцель Голан История и география Основан 1883 Площадь 11,60 км² Высота над уровнем моря 86 м Часовой пояс UTC+2:00, летом UTC+3:00 Население Население 1 730 чело...

 

1977 Rhodesian attack in Mozambique Some of this article's listed sources may not be reliable. Please help improve this article by looking for better, more reliable sources. Unreliable citations may be challenged and removed. (January 2019) (Learn how and when to remove this message) Operation DingoChimoio massacrePart of the Rhodesian Bush WarChimoio, New FarmTembueOperation Dingo (Mozambique)Date23–25 November 1977LocationChimoio and Tembue, Mozambique19°07′S 33°28′E / þ...