Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / что за функция такая char* alloc(int) / 19 сообщений из 19, страница 1 из 1
06.05.2020, 14:34
    #39954610
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
в учебнике Кернигана, Ритчи приведен исходник где используется вот эта функция char* alloc(int)
однако она нигде не описана .

Подскажите , пожалуйста, где её взять.
исходник из учебника првожу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
#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]);
    }
...
Рейтинг: 0 / 0
06.05.2020, 14:38
    #39954614
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
andron81,

malloc() и calloc(). Ошибка видимо.
...
Рейтинг: 0 / 0
06.05.2020, 14:39
    #39954616
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...
...
Рейтинг: 0 / 0
06.05.2020, 14:40
    #39954617
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
petrav
andron81,

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


возможно. у меня вообще-то pdf -ка. сейчас попробую
...
Рейтинг: 0 / 0
06.05.2020, 14:41
    #39954619
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
andron81,

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

А вообще вот сайт, там поиск хороший. https://en.cppreference.com .
...
Рейтинг: 0 / 0
06.05.2020, 14:43
    #39954622
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
mayton
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...



да, но в главе ни слова про эту функцию. а ведь это первое её использование.
...
Рейтинг: 0 / 0
06.05.2020, 14:47
    #39954625
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
petrav
andron81,

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

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


неа. это первое упоминание.
...
Рейтинг: 0 / 0
06.05.2020, 14:54
    #39954629
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
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()
...
Рейтинг: 0 / 0
06.05.2020, 14:56
    #39954631
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
...
Рейтинг: 0 / 0
06.05.2020, 15:01
    #39954634
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
mayton
Обоим старикам по 70 и по 80 лет соотвественно. Чего ты от них ожидал?
Все равно что твоего дедушку спросить как память аллоцировать. Он тебе
расскажет как воевал с Ковпаком...

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

Эта книга просто переиздание. Классика нетленная. От авторов Си и первых версий Unix. На этой книге основано всё что нас окружает, начиная с простейшего сотового телефона. Я её на втором курсе прочёл.
...
Рейтинг: 0 / 0
06.05.2020, 15:31
    #39954650
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
Беря во внимание что эти два бородача создавали язык "C" - вполне возможно что такая функция существовала.
"allocate" -> alloc -> /malloc/calloc/alloca/realloc e.t.c. Как и open -> fopen.

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

А это што за булшит wntelines? Наверное это writelines. Тоже очепятка?
...
Рейтинг: 0 / 0
06.05.2020, 15:38
    #39954653
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
mayton
Беря во внимание что эти два бородача создавали язык "C" - вполне возможно что такая функция существовала.
"allocate" -> alloc -> /malloc/calloc/alloca/realloc e.t.c. Как и open -> fopen.

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

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



нет - нет. мой косяк. все описано в книге ранее :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char *alloc(int n) /* возвращает указатель на п символов */
{
 if (allocbuf + ALLOCSIZE - allocp >= n) {
 allocp += n; /* пространство есть */
 return allocp - n; /* старое р */
 } else /* пространства нет */
 return 0;
}
...
Рейтинг: 0 / 0
06.05.2020, 15:43
    #39954656
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
Dimitry Sibiryakov,

Зря вы про alloca упомянули тут ))
...
Рейтинг: 0 / 0
06.05.2020, 15:50
    #39954659
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
andron81

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


Как я и предполагал -- это обёртка, только вокруг другого функционала. На это намекала необычная сигнатура функции alloc() из первого исходника:
Код: plaintext
1.
char* alloc(int);
...
Рейтинг: 0 / 0
06.05.2020, 15:57
    #39954663
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
petrav

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



ну да . вы правы
...
Рейтинг: 0 / 0
06.05.2020, 17:08
    #39954704
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
Разрази меня гром я где-то видел alloc()... Где-же...
...
Рейтинг: 0 / 0
07.05.2020, 20:38
    #39955094
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
...
Рейтинг: 0 / 0
07.05.2020, 22:31
    #39955127
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
mayton
Разрази меня гром я где-то видел alloc()... Где-же...
в турбо С от борланда был такой заголовок, нестандартный, естественно)
...
Рейтинг: 0 / 0
08.05.2020, 10:27
    #39955194
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что за функция такая char* alloc(int)
Да. Похоже на то.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / что за функция такая char* alloc(int) / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]