Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
в учебнике Кернигана, Ритчи приведен исходник где используется вот эта функция char* alloc(int)
однако она нигде не описана .

Подскажите , пожалуйста, где её взять.
исходник из учебника првожу
#include <stdio.h>
#include <string.h>

#define MAXLINES 5000 /* максимальное число строк */
char* lineptr[MAXLINES]; /* указатели на строки */
int readlines(char* lineptr[], int nlines);
void wntelines(char* lineptr[], int nlines);
void qsort(char* lineptr[], int left, int right);
/* сортировка строк */
main()
{
    int nlines; /* количество прочитанных строк */
    if ((nlines = readlines(lineptr, MAXLINES)) >= 0) {
    qsort(lineptr, 0, nlines - 1);
    wntelines(lineptr, nlines);
    return 0;
 }
    else {
        printf("ошибка: слишком много строк\п");
        return 1;
    }
}
#define MAXLEN 1000 /* максимальная длина строки */
int getline(char*, int);
//char* alloc(int);
/* readlines: чтение строк */
int readlines(char* lineptr[], int maxlines)
{
    int len, nlines;
    char* p, line[MAXLEN];
    nlines = 0;
    while ((len = getline(line, MAXLEN)) > 0)
        if (nlines >= maxlines || !(p = alloc(len)) == NULL)
            return -1;
        else {
            line[len - 1] = ' \0'; /* убираем символ \n */
            strcpy(p, line);
            lineptr[nlines++] = p;
        }
    return nlines;
}
    /* writelines: печать строк */
    void writelines(char* lineptr[], int nlines)
    {
        int i;
        for (i = 0; i < nlines; i++)
            printf("%s\n", lineptr[i]);
    }
6 май 20, 14:34    [22128179]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
petrav
Member

Откуда:
Сообщений: 2074
andron81,

malloc() и calloc(). Ошибка видимо.
6 май 20, 14:38    [22128184]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
mayton
Member

Откуда: loopback
Сообщений: 46320
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...
6 май 20, 14:39    [22128186]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
petrav
andron81,

malloc() и calloc(). Ошибка видимо.


возможно. у меня вообще-то pdf -ка. сейчас попробую
6 май 20, 14:40    [22128187]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
petrav
Member

Откуда:
Сообщений: 2074
andron81,

Или alloc() это в книге написали обёртку вокруг функций malloc() / calloc(). А Вы пропустили этот момент.

А вообще вот сайт, там поиск хороший. https://en.cppreference.com.
6 май 20, 14:41    [22128189]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
mayton
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...



да, но в главе ни слова про эту функцию. а ведь это первое её использование.
6 май 20, 14:43    [22128192]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
petrav
andron81,

Или alloc() это в книге написали обёртку вокруг функций malloc() / calloc(). А Вы пропустили этот момент.

А вообще вот сайт, там поиск хороший. https://en.cppreference.com.


неа. это первое упоминание.
6 май 20, 14:47    [22128195]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
Dima T
Member

Откуда:
Сообщений: 14727
https://stackoverflow.com/questions/32685851/alloc-malloc-and-alloca-whats-the-difference
alloc() is not a standard C library function. Some older compilers and libraries contain an <alloc.h> library which provides some memory allocation functions, but this is not standard. The Microsoft Visual C++ runtime includes an Alloc() function which is somewhat similar to malloc(), but this is also not part of the C standard.

Похоже древность какая-то. Скорее всего позже заменили на malloc() и calloc().

Судя по синтаксису просто заменить на malloc()
6 май 20, 14:54    [22128200]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49957

https://stackoverflow.com/questions/32685851/alloc-malloc-and-alloca-whats-the-difference

Posted via ActualForum NNTP Server 1.5

6 май 20, 14:56    [22128202]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
petrav
Member

Откуда:
Сообщений: 2074
mayton
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...

Денис Ритчи уже не с нами.

Эта книга просто переиздание. Классика нетленная. От авторов Си и первых версий Unix. На этой книге основано всё что нас окружает, начиная с простейшего сотового телефона. Я её на втором курсе прочёл.
6 май 20, 15:01    [22128207]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
mayton
Member

Откуда: loopback
Сообщений: 46320
Беря во внимание что эти два бородача создавали язык "C" - вполне возможно что такая функция существовала.
"allocate" -> alloc -> /malloc/calloc/alloca/realloc e.t.c. Как и open -> fopen.

А исходник - старый. Рукопись. А рукописи как известно не горят. Да и что вам дался этот аллок. Ну замените его
по смыслу на то что подходит. Ведь смысл исходника - демонстрация сортировки.

А это што за булшит wntelines? Наверное это writelines. Тоже очепятка?
6 май 20, 15:31    [22128234]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
mayton
Беря во внимание что эти два бородача создавали язык "C" - вполне возможно что такая функция существовала.
"allocate" -> alloc -> /malloc/calloc/alloca/realloc e.t.c. Как и open -> fopen.

А исходник - старый. Рукопись. А рукописи как известно не горят. Да и что вам дался этот аллок. Ну замените его
по смыслу на то что подходит. Ведь смысл исходника - демонстрация сортировки.

А это што за булшит wntelines? Наверное это writelines. Тоже очепятка?



нет - нет. мой косяк. все описано в книге ранее :
char *alloc(int n) /* возвращает указатель на п символов */
{
 if (allocbuf + ALLOCSIZE - allocp >= n) {
 allocp += n; /* пространство есть */
 return allocp - n; /* старое р */
 } else /* пространства нет */
 return 0;
}
6 май 20, 15:38    [22128242]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6491
Dimitry Sibiryakov,

Зря вы про alloca упомянули тут ))
6 май 20, 15:43    [22128253]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
petrav
Member

Откуда:
Сообщений: 2074
andron81

нет - нет. мой косяк. все описано в книге ранее :
char *alloc(int n) /* возвращает указатель на п символов */
{
 if (allocbuf + ALLOCSIZE - allocp >= n) {
 allocp += n; /* пространство есть */
 return allocp - n; /* старое р */
 } else /* пространства нет */
 return 0;
}

Как я и предполагал -- это обёртка, только вокруг другого функционала. На это намекала необычная сигнатура функции alloc() из первого исходника:
char* alloc(int);


Сообщение было отредактировано: 6 май 20, 15:49
6 май 20, 15:50    [22128257]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 834
petrav

На это намекала необычная сигнатура функции alloc() из первого исходника:
char* alloc(int);


ну да . вы правы
6 май 20, 15:57    [22128263]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
mayton
Member

Откуда: loopback
Сообщений: 46320
Разрази меня гром я где-то видел alloc()... Где-же...
6 май 20, 17:08    [22128334]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1338
тут
7 май 20, 20:38    [22129006]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
egorych
Member

Откуда: и зачем;
Сообщений: 4784
mayton
Разрази меня гром я где-то видел alloc()... Где-же...
в турбо С от борланда был такой заголовок, нестандартный, естественно)
7 май 20, 22:31    [22129054]     Ответить | Цитировать Сообщить модератору
 Re: что за функция такая char* alloc(int)  [new]
mayton
Member

Откуда: loopback
Сообщений: 46320
Да. Похоже на то.
8 май 20, 10:27    [22129180]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить