powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / что за функция такая char* alloc(int)
19 сообщений из 19, страница 1 из 1
что за функция такая char* alloc(int)
    #39954610
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в учебнике Кернигана, Ритчи приведен исходник где используется вот эта функция 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
что за функция такая char* alloc(int)
    #39954614
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

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

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


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

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

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



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

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

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


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

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

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

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

А это што за булшит wntelines? Наверное это writelines. Тоже очепятка?
...
Рейтинг: 0 / 0
что за функция такая char* alloc(int)
    #39954653
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
что за функция такая char* alloc(int)
    #39954656
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Зря вы про alloca упомянули тут ))
...
Рейтинг: 0 / 0
что за функция такая char* alloc(int)
    #39954659
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
что за функция такая char* alloc(int)
    #39954663
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

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



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


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