Какие функции в библиотеке времени выполнения GNU C находятся в стандартной библиотеке? - PullRequest
0 голосов
/ 01 марта 2011

Как мне узнать, какие функции CRT, поддерживаемые GNU C, являются частью стандартной библиотеки? Как пример: atoi () и itoa ().

Ответы [ 6 ]

2 голосов
/ 01 марта 2011

Цитирование части первых абзацев Википедии для каждого из atoi и itoa:

atoi

atoi является функциейв языке программирования C , который преобразует строку в целочисленное числовое представление.atoi означает ASCII в целое число. Он включен в заголовочный файл стандартной библиотеки C stdlib.h .

itoa

itoa (целое число в ASCII)функция является широко распространенным нестандартным расширением стандартного языка программирования C.Он не может использоваться переносимым образом, так как он не определен ни в одном из стандартов языка C ;однако компиляторы часто предоставляют его через заголовок в режиме несоответствия, поскольку это логический аналог стандартной функции библиотеки atoi.

2 голосов
/ 01 марта 2011

atoi() является частью стандартной библиотеки.
itoa() не является частью стандартной библиотеки.


Вы можете реализовать ее следующим образом:

 #include <string.h>

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

 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:  reverse string s in place */
 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;
     }
 }

См. Комментарии, чтобы понять, почему это сделано, хотя для других значений оно работает нормально.

1 голос
/ 01 марта 2011

Ответ на ваш вопрос довольно очевиден, возможно, для использования стандартной справочной библиотеки.Окончательной ссылкой является стандарт ISO.Но есть и другие. Например, Библиотека Dinkumware C .

0 голосов
/ 01 марта 2011

itoa не является частью стандартной библиотеки;это общее расширение.

atoi является частью стандартной библиотеки, а ее прототип объявлен в stdlib.h ( n1256 , § 7.20.1.2).

Полный списоко том, какие функции являются частью стандартной библиотеки, см. онлайн-стандарт C, черновик n1256 , § 7 (библиотека).

0 голосов
/ 01 марта 2011

itoa отсутствует в стандартной библиотеке ../

0 голосов
/ 01 марта 2011

Я уверен, что хотя бы atoi () находится в библиотеке std.

Википедия подтверждает это atoi () itoa ()

...