Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6456
Последний выпуск: 19.06.2015

strtod-strtol

[ Оглавление ]
               STRTOD-STRTOL
                 
                #include <stdlib.h>
                
                double strtod(nptr, endptr);  преобразует  строку,
                                              на которую указывает
                                              nptr, в double
                                        
                char *nptr;                   указатель  на строку
                char **endptr;                указатель  на  конец
                                              просмотра
                
                long strol(nptr,endptr,base); преобразует строку в
                                              long  десятичное це-
                                              лое,   эквивалентное
                                              числу с данным осно-
                                              ванием base
                char *nptr;
         
                char **endptr;
                int  base;                    используемое основа-
                                              ние
                
                
               Описание.
                
               Функции strtod и strtol соответственно преобразуют символь-
         ную строку к значению с двойной точностью или к  длинному  целому
         значению.  Исходная  строка  string представляет собой последова-
         тельность символов, которые интерпретируются как числовое  значе-
         ние  специального  типа. Эти функции прекращают чтение строки как
         только встретится символ, который не может быть частью числа (это
         может быть нулевой символ '\0 в конце строки); для strtol символом
         прерывания может быть также первый цифровой символ, который боль-
         ше или равен base. Если endptr - не NULL,  *endptr  указывает  на
         тот символ, на котором останавливается просмотр.
               Функция  strtod предполагает, что nptr указывает на строку,
         имеющую следующую форму:
                
         [whitespace][sign][digiits][.digits][{d:D:e:E}[sign]digits]
                
               При появлении первого символа, не отвечающего  этой  форме,
         обработка прекращается.
               Функция  strtol  предполагает, что nptr указывает на строку
         следующей структуры:
                
               [whitespace][sign][0][x][digits]
                
               Если base лежит между 2 и 36, это значение используется как
         основание системы счисления данного числа.
               Если base = 0, начальные символы строки, на которые  указы-
         вает  nptr,  используются  для определения основания. Если первый
         символ - 0 и второй - одна из цифр от 1 до 7, то строка интерпре-
         тируется как восьмеричное целое; если первый символ 0, а второй x
         или X, тогда строка понимается как шестнадцатеричное целое;  если
         первый символ принадлежит последовательности 1-9, то строка пони-
         мается как десятичное целое.
                
               Возвращаемое значение.
                
               Функция  strtod  возвращает значение числа с плавающей точ-
         кой, исключая случаи переполнения или потери результата (т.е. аб-
         солютное значение результата меньше, чем это допустимо диапазоном
         представления числа). В случае переполнения или потери значимости
         результата возвращается соответственно +HUGE или -HUGE.
               Функция strtol возвращает значение преобразованной  строки,
         исключая случай переполнения или потери результата. В этом случае
         возвращается  соответственно  LONG_MAX  или LONG_MIN. Обе функции
         устанавливают errno в ERANGE.
               См. также atof, atol.
                
               Пример.
                
                #include <stdlib.h>
         
                
                main()
                 {
                 char *string, *stopstring;
                 double x;
                 long l;
                 int bs;
             
                 string="3.1415926This stopped it";
                 x=strtod (string, &stopstring);
                 printf ("string=%s\n",string);
                 printf (    strtod=%ld (base %d)\n", l, bs);
                 printf ("   Stopped scan at %s\n\n", stopstring);
                 string="10110134932";
                 printf ("string=%s\n", string);
                 for (bs=2; bs<=8; bs*=2)  {
                 l=strtol(string, &stopstring, bs);
                 printf (" strtol=%ld (base %d)\n",l,bs);
                 printf (" Stopped scan at %s\n\n",stopstring);
                  }
                }

               На выходе:
            
               string = 3.1415926This stopped it
                 strtod = 3.141593
                 Stopped scan at This stopped it
            
               string = 10110134932
                 strtol = 45 (base 2)
           
            
                 Stopped scan at 34932
      
                 strtol = 4423 (base 4)
                 Stopped scan at 4932
            
                 strtol = 2134108 (base 8)
                 Stopped scan at 932
            

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
100K
24 октября
Малышев Олег
0 / / 24.10.2018
Мне нравитсяМне не нравится
24 октября 2018, 11:15:45
ошибка printf( strod=%ld (base %d)\n", l, bs);
надо printf(" strod=%lf (base %d)\n", x, bs);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог