printf ( "Число було ..n". value);>
printf ( "Це не схоже на ціле.");
МАЛ. 15.4. Програма використання atoi ().
Ми передбачили перевірку деяких помилок. По-перше, слід подивитися, уміщається чи вхідний рядок в призначеному для неї масиві. Оскільки number є статичним символьним масивом, він ініціалізується нулями. Якщо останній елемент масиву не є нулем, значить щось не так, і програма припиняє роботу. Тут ми використовували бібліотечну функцію exit (). яка виводить нас з програми. Трохи пізніше ми розповімо коротко про цю функцію.
Потім подивимося, чи не містить рядок що-небудь крім пробілів, цифр і алгебраїчних знаків. Функція відкидає такі рядки, як "дерево" або "1.2Е2". Її влаштовує суміш, подібна "3 - 4 + 2", але atoi () буде виконувати подальший відбір. Згадаймо, що! є операцією заперечення, тому! isdigit (c) означає: "з не є цифрою". рядок
показує, як використовується функція atoi (). Її аргумент є покажчиком символьного рядка; в цьому випадку ми застосували ім'я масиву number. Функція повертає ціле значення для такого рядка. Таким чином, "1234" є рядком з чотирьох символів і перекладається в 1234 - єдине число типу int.
Функція atoi () ігнорує провідні прогалини, обробляє провідний алгебраїчний знак, якщо він є, і обробляє цифри аж до першого символу, нс є цифрою. Тому наш приклад "3 - 4 + 2" був би перетворений в значення 3. Подивіться "Питання" в кінці глави для можливого застосування цієї функції.
Функція atof () виконує подібні дії для чисел з плаваючою точкою. Вона повертає тип double. тому повинна бути описана як double в використовує її програмі.
Прості версії atof () будуть обробляти числа виду 10.2, 46 і - 124.26. Більш потужні версії перетворять також експонентну запис, т. Е. Числа, подібні 1.25Е - 13.
Ваша система може також мати зворотні функції, що працюють в протилежному напрямку. Функція itoa () буде перетворювати ціле в символьний рядок, а функція ftoa () перетворювати число з плаваючою точкою в символьний рядок.