Преобразование типов (char to float) C/C++

Все о программировании под *nix
Аватара пользователя
Speccyfan
Неотъемлемая часть форума
Сообщения: 540
Зарегистрирован: 18 дек 2004, 15:15
Откуда: Polotsk
Контактная информация:

Преобразование типов (char to float) C/C++

Сообщение Speccyfan »

Здравствуйте!
Необходимо строку сконвертить в float, как это можно сделать на gcc ?
Везде натыкаюсь на функцию atof(), но это для борландовского Си, а мне же под пингвином надо. Обратное преобразование можно сделать при помощи sprintf, а вот для char to float никак нигде не найду примера.
Хелп плиз!
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588

Аватара пользователя
grub
Неотъемлемая часть форума
Сообщения: 849
Зарегистрирован: 13 сен 2006, 10:29
Откуда: Минск
Контактная информация:

Сообщение grub »

Не спец по С... но не спасет ли тебя функция read или что-то вроде этого (смысл -- считать строку в переменную нужного тебе типа)?

В фортране (g95) такая хрень точно работает.

Аватара пользователя
Speccyfan
Неотъемлемая часть форума
Сообщения: 540
Зарегистрирован: 18 дек 2004, 15:15
Откуда: Polotsk
Контактная информация:

Сообщение Speccyfan »

Что-то я такого не найду ...
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588

Аватара пользователя
Victor Gr.
Неотъемлемая часть форума
Сообщения: 891
Зарегистрирован: 13 авг 2004, 15:39
Откуда: Минск
Контактная информация:

Сообщение Victor Gr. »

Speccyfan,

atof() определена в stdlib.h и есть в стандарте ANSI C.

Код: Выделить всё

#include <stdio>
#include <stdlib>

int main(void) {

    char * str = "3.1498";
    float    a = 0;

    printf ("%s\n", str);
    a = atof(str);
    printf ("%f\n", a);

    return 0;

}

Аватара пользователя
Speccyfan
Неотъемлемая часть форума
Сообщения: 540
Зарегистрирован: 18 дек 2004, 15:15
Откуда: Polotsk
Контактная информация:

Сообщение Speccyfan »

Спасибо! Что-то я затупил, мне казалось, что нету тут stdlib :)
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588

Аватара пользователя
exe
Неотъемлемая часть форума
Сообщения: 860
Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск

Сообщение exe »


Aleksey Kondratenko
Неотъемлемая часть форума
Сообщения: 250
Зарегистрирован: 12 авг 2003, 03:55
Контактная информация:

Сообщение Aleksey Kondratenko »

А двигун все еще коцает .h на конце include-ов. Безобразие! :x:x

Например:

Код: Выделить всё

// stdio.h here
#include <stdio>
// asd.asd.asd.asd here
#include <asd>


Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

...или банальный int scanf (const char* format, ...) с %lf в формате?
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

olecom
Интересующийся
Сообщения: 65
Зарегистрирован: 03 апр 2008, 18:54
Откуда: Родом: Чернавчицы, Брест, Бульбастан; Сейчас: Оломоуц, Чехия.

Re: Преобразование типов (char to float) C/C++

Сообщение olecom »

Speccyfan писал(а):Здравствуйте!
Необходимо строку сконвертить в float, как это можно сделать на gcc ?
Везде натыкаюсь на функцию atof(), но это для борландовского Си, а мне же под пингвином надо. Обратное преобразование можно сделать при помощи sprintf, а вот для char to float никак нигде не найду примера.
Хелп плиз!
Например в дебяне есть пакет http://packages.debian.org/manpages-dev . Поставив его и набрав

Код: Выделить всё

sh$ man atof
можно найти достаточно информации про эту конкретную функцию. В случае наличия интернета и отсуствия man системы, можно воспользоватся сервисом
http://kerneltrap.org/search/node/atof

Прошу обратить внимание, что atof() не детектирует ошибки (кривой ввод) и возвращает double.

Ответить