здравствуй я тупой долбаеб, сессия на носу.нужно решить оддну контрольную по си. выручай зодрот-си-кун. 1. Элемент односвязного списка содержит N указателей на строки. Функция читает файл и заполняет структуру данных указателями на прочитанные строки (список и строки размещаются в динамической памяти).
харошай задача, тока скажи в каком порядке заполнять структуру?
а какие порядки бывают?главное чтобы функции неизвестные не использовались.1курс-кун
Зашел на Двач тыХотел задач готовыхСосни-ка хуйца
>>530не нужно со мной так разговаривать
>>527Конечно же в обратном-неебаться-хузнает-каком.
>>527
Конечно же в обратном-неебаться-хузнает-каком.
heeeeeelp
>>526пиздец, нихуя не ясно.struct element { char *line1; char *line2; char *line3; char *line4; element *next;};типо того? и чё делать, читать до EOF строки из файла и добавлять в список элемент, по 4 строки на элемент?
>>526пиздец, нихуя не ясно.struct element { char *line1; char *line2; char *line3; char *line4; element *next;};
типо того? и чё делать, читать до EOF строки из файла и добавлять в список элемент, по 4 строки на элемент?
как же ты заебал!задаешь Nв файле дохуища строк (> N)заполнил все указатели - создаешь новый элемент списка.блядь.#include <stdio.h>#include <string.h>#include <malloc.h>#define sptr sizeof(char*)int main() { char ** eblo, ** mudak, * xyilo; long N, i; FILE *f = fopen("dynspi.c","rt"); if (!f) { printf("Соси хуй былдо\n"); return -1; } printf("N = "); scanf("%u",&N); eblo = malloc((N+1)*sptr); //память под указатель на пердыдущий список + строки *eblo = NULL; //этот первый - предыдущего не было i = 1; if (N < 1) { printf("Ололо, ты быдло и хуйло"); return -1; } while (1) { if (i>N) { i = 1; mudak = malloc((N+1)*sptr); *mudak = (char*)eblo; eblo = mudak; printf("DICKS EVERYWHERE DICKS EVERYWHERE DICKS EVERYWHERE DICKS EVERYWHERE\n"); } xyilo = malloc(256); eblo[i] = xyilo; memset(xyilo,0,256); if (fgets(xyilo,255,f) == NULL) break; while (*xyilo != '\n') ++xyilo; *xyilo = 0; ++i; } fclose(f); while (1) { --i; if (i == 0) { mudak = (char**)*eblo; free(eblo); eblo = mudak; i = N; if (eblo == NULL) break; } printf("%s\n",eblo[i]); } return 0;}
как же ты заебал!задаешь Nв файле дохуища строк (> N)заполнил все указатели - создаешь новый элемент списка.блядь.
#include <stdio.h>#include <string.h>#include <malloc.h>#define sptr sizeof(char*)int main() { char ** eblo, ** mudak, * xyilo; long N, i; FILE *f = fopen("dynspi.c","rt"); if (!f) { printf("Соси хуй былдо\n"); return -1; } printf("N = "); scanf("%u",&N); eblo = malloc((N+1)*sptr); //память под указатель на пердыдущий список + строки *eblo = NULL; //этот первый - предыдущего не было i = 1; if (N < 1) { printf("Ололо, ты быдло и хуйло"); return -1; } while (1) { if (i>N) { i = 1; mudak = malloc((N+1)*sptr); *mudak = (char*)eblo; eblo = mudak; printf("DICKS EVERYWHERE DICKS EVERYWHERE DICKS EVERYWHERE DICKS EVERYWHERE\n"); } xyilo = malloc(256); eblo[i] = xyilo; memset(xyilo,0,256); if (fgets(xyilo,255,f) == NULL) break; while (*xyilo != '\n') ++xyilo; *xyilo = 0; ++i; } fclose(f); while (1) { --i; if (i == 0) { mudak = (char**)*eblo; free(eblo); eblo = mudak; i = N; if (eblo == NULL) break; } printf("%s\n",eblo[i]); } return 0;}
>>555мудак, я не ОП. >>552 -кун
>>555а вот теперь начнем тролить. xyilo = malloc(256); eblo[i] = xyilo; memset(xyilo,0,256); if (fgets(xyilo,255,f) == NULL) break; while (*xyilo != '\n') ++xyilo;какого хуя каждая трока занимает в памяти по 256 бийт?какого хуй строки длинее 256 байт не поддерживаются?более того будет краш если попадется строка длинее 256я прозреал чтоб удет много быдлокода, но ,блять, не до такой же степени?
>>555а вот теперь начнем тролить.
xyilo = malloc(256); eblo[i] = xyilo; memset(xyilo,0,256); if (fgets(xyilo,255,f) == NULL) break; while (*xyilo != '\n') ++xyilo;
какого хуя каждая трока занимает в памяти по 256 бийт?какого хуй строки длинее 256 байт не поддерживаются?более того будет краш если попадется строка длинее 256
я прозреал чтоб удет много быдлокода, но ,блять, не до такой же степени?
>>565допиши сам, вафел.
>>566зачем ему.он не оп.ОП
3 errors
>>568>3 errorsпри компиляции? не может быть такого. все работает в mingw, watcom и bcc32.
>>568
>3 errors
при компиляции? не может быть такого. все работает в mingw, watcom и bcc32.
>>569да при компиляции, это же с++ ?
ну ты и мудак... это обычный C! GCC!Если так хочется с кампелировать в месте, то добавь перед malloc-ами определения типовeblo = (char**)malloc((N+1)*sptr);mudak = (char**)malloc((N+1)*sptr);xyilo = (char*)malloc(256);стандарт C++ не поддерживает выделение памяти неизвестно под что.
ну ты и мудак... это обычный C! GCC!Если так хочется с кампелировать в месте, то добавь перед malloc-ами определения типов
eblo = (char**)malloc((N+1)*sptr);mudak = (char**)malloc((N+1)*sptr);xyilo = (char*)malloc(256);
стандарт C++ не поддерживает выделение памяти неизвестно под что.
>>571я все равно нихуя не понимаю.мне нужно готовенькое :3 на с++
слишком толсто, Андрей
>>572 вот те на С++алсо трабл с чтением строки овер столькото байт не фиксил, я ебал ещё и блинны строк в файле считать#include <iostream>#include <fstream>#include <conio.h>using namespace std;#define INPLENGTH 1024int main( ) { fstream fh( "govno.txt", ios::in ); if (fh.fail( )) { cerr << "super cool story bro"; _getch( ); return 1; } int n = 0; cout << "N == "; cin >> n; if (n < 1) { cerr << "super cool story bro"; _getch( ); return 1; } void * PtrHead = NULL; while (!fh.eof( )) { char ** newEl = new char * [ ( n + 1 ) * sizeof( char * ) ]; for (int i = 0; i < n; i++) { char * inpBuf = new char [ 1024 ]; fh.getline( inpBuf, INPLENGTH, '\n'); if(fh.good( )) { newEl[ i ] = inpBuf; } else { newEl[ i ] = NULL; delete[ ] inpBuf; } } newEl[ n ] = ( char * ) PtrHead; PtrHead = ( void * ) newEl; } fh.close( ); char ** tmp = ( char ** ) PtrHead; while (tmp != NULL) { for (int i = 0; i < n; i++) { if (tmp[ i ] != NULL) cout << tmp[ i ] << endl; } tmp = ( char ** ) tmp[ n ]; cout << endl; } _getch( ); return 0;}
>>572 вот те на С++алсо трабл с чтением строки овер столькото байт не фиксил, я ебал ещё и блинны строк в файле считать
#include <iostream>#include <fstream>#include <conio.h>
using namespace std;
#define INPLENGTH 1024
int main( ) { fstream fh( "govno.txt", ios::in ); if (fh.fail( )) { cerr << "super cool story bro"; _getch( ); return 1; }
int n = 0; cout << "N == "; cin >> n; if (n < 1) { cerr << "super cool story bro"; _getch( ); return 1; }
void * PtrHead = NULL; while (!fh.eof( )) { char ** newEl = new char * [ ( n + 1 ) * sizeof( char * ) ]; for (int i = 0; i < n; i++) { char * inpBuf = new char [ 1024 ]; fh.getline( inpBuf, INPLENGTH, '\n'); if(fh.good( )) { newEl[ i ] = inpBuf; } else { newEl[ i ] = NULL; delete[ ] inpBuf; } } newEl[ n ] = ( char * ) PtrHead; PtrHead = ( void * ) newEl; } fh.close( );
char ** tmp = ( char ** ) PtrHead; while (tmp != NULL) { for (int i = 0; i < n; i++) { if (tmp[ i ] != NULL) cout << tmp[ i ] << endl; } tmp = ( char ** ) tmp[ n ]; cout << endl; } _getch( ); return 0;}
>>574char * inpBuf = new char [ 1024 ];---вощем вы все неиспровимое наследственное дебильевас к небыдлокодингу допускать нельзя
>>580тролль такой тролльчто, по твоему, побайтово читать до первого перевода каретки и, получив длинну, выделить память, откатится, и прочитать в выделеный буфер строку?если нет, то код в студию, иначе пиздуй отседа, ссаное школиё
>>580тролль такой тролльчто, по твоему, побайтово читать до первого перевода каретки и, получив длинну, выделить память, откатится, и прочитать в выделеный буфер строку?
если нет, то код в студию, иначе пиздуй отседа, ссаное школиё
так надо делать:1.вариантделаеш буфер в который точно влезит 1а строка(если не влезла ошибку выдаеш)читаеш в не строку, узнаеш лдинну, выделяш память, копируеш2.вариант (правильный)выделяш норально так памяти (64кб)заполняеш ее строками и структурами,как кончилась, выделяи ище стокаже.в некоторых операционках можно менять размер уже выделеной памяти3й вариант, 2х проходный1й проход- расчет того сока нужна памяти2й проход- выделение и заполнение
>>582> читаеш в не строкуcool story, код в студию> выделяш норально так памяти (64кб)читаеш 3 байта и пиздец. или ты ещё и проверку + урезание делать будеш?> в некоторых операционках можно менять размер уже выделеной памятив любых можно. я больше скажу, реализация функций типа realloc это банальный запрос памяти, копирование старого буфера в новый и освобождение памяти под старый буфер> 3й вариантсобсно описал в >>581всю эту ботву надо реализовывать уже не строковым чтением, а побайтовым или поблочным, а ты бы, вместо алгоритмы рассписывать, лучше бы код наваял. теоретиков нам тут не надо, на практике такого говна, типа "прочитать строку в хуй знает сколько байт" не бывает, на всё вносят ограничение
>>582
> читаеш в не строку
cool story, код в студию
> выделяш норально так памяти (64кб)
читаеш 3 байта и пиздец. или ты ещё и проверку + урезание делать будеш?
> в некоторых операционках можно менять размер уже выделеной памяти
в любых можно. я больше скажу, реализация функций типа realloc это банальный запрос памяти, копирование старого буфера в новый и освобождение памяти под старый буфер
> 3й вариант
собсно описал в >>581
всю эту ботву надо реализовывать уже не строковым чтением, а побайтовым или поблочным, а ты бы, вместо алгоритмы рассписывать, лучше бы код наваял. теоретиков нам тут не надо, на практике такого говна, типа "прочитать строку в хуй знает сколько байт" не бывает, на всё вносят ограничение
Строка длиннее 255 байт - не строка, а хуй собачий. В следующий буфер запишется продолжение - и будь доволен. Для особо тупых можно сделать проверку, кончается ли она переводом строки. Если кончается то заебись. А если не кончается, то соси хуи и жди продолжения в следующем буфере.Ни для одной задачи не требуется чоткава выделения 277 байт. Можно обойтись 255 и 22-байтным буферами. Даже флаг дополнительный заводить не придется.
txt не создается, в чем смысл тогда?
его самому нужно создать!а вот что потом?
вощем вы все неиспровимое наследственное дебильевас к небыдлокодингу допускать нельзя---вот нормальный пост:>>582для тупых "читаеш в не строку"="читаеш в нее строку"---каталог-кун
>>587сделай?а?
>>587вобщем ты хуй, твоя мать - шлюха, твой отец - трапалсо семён в треде
>>526Надеюсь, тебя выпрут из инс-та. С такими долбаёбами я, в будущем, не хочу работать.Задача простейшая.
>>596>С такими долбаёбами я, в будущем, не хочу работатьпохуй, будишьтвой будующий колега, О.П. Рак
>>596
>С такими долбаёбами я, в будущем, не хочу работать
похуй, будишьтвой будующий колега, О.П. Рак
>>599иди на хуй шлюха>>596где-то я слышал это уже.
>>599Ну если только Анальной Шлюхой.
кто мне там написал этот код? мой препод забанил его. спрсоил что же за мудак его написал?
>>618> мой препод забанил егои ты, и твои родители, и твой препод сосите мой прогерский хуй
>>618
> мой препод забанил его
и ты, и твои родители, и твой препод сосите мой прогерский хуй
преподы читают 2ч,такшо решение несовподающее с мнением 2ч не пройдет!
>>623трололо
>>618на C++? не я. я на C писал.алсо, дай контакт препода. я ему позвоню/напишу и скажу, что он сам мудак и сосёт хуи забесплатно.
>>618на C++? не я. я на C писал.
алсо, дай контакт препода. я ему позвоню/напишу и скажу, что он сам мудак и сосёт хуи забесплатно.
а еще я скажу, что ебал его маму жируху в ее разьебанную пиздищу, ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал ебал и потом появился он.
>>64289139886656
- wakaba 3.0.8 + futaba + futallaby -