Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Красиво. Ничего не значащие названия функций «perevod» и «proverka» (хотя в названии как-то надо было отметить, что это перевод в число первой и второй координаты соответственно).
Ты данные подложил без перевода строки? А как это воспроизвести не в виртуалке? Подложить программе текстовый файл без перевода строки через знак меньше? Типа ./petuh <input.txt ?
А есть в сишке безопасный способ ввода строки без лишнего пердолинга?
• gets не проверяет размер буфера, возможно переполнение.
• gets_s есть не во всех библиотеках (ввели в C11, но до сих пор где-нибудь может отсутствовать).
• fgets проверяет размер, но может вернуть результат с символом перевода строки, а может без.
Поддерживаю макаку, если перевод строки не был введён или вся строка в буфер не влезла, что делать? Добавлять в строку отсебятину? Или всегда не включать перевод строки, чтоб не было понятно, был он или нет?
Поддерживаю. Без этой питушни неясно, ввелась психоза целиком или нет.
Однако, я бы возвращал количество считанных символов вместо питушарского указателя на саму строку, который никому не нужен. Это даёт O(1) накладных расходов, но избавляет от пердолинга с O(N) strlen получившейся питушни.
Поддерживаю. Нахуя вообще придумали этот питушарский разврат переданной строки? Чтобы поддерживать однострочные хаки вида «char *line = fgets(malloc(42), 42, 0);»?
А зачем придумали в условии оператора if возможность объявлять переменную, тут же ей присваивать значение и тут же это значение с чем-нибудь сравнивать?
> malloc
какую-то его версию, которая не ворвращает NULL
> однострочные хаки
Причём эта недофункциональщина встречается только в некоторых функциях. Видимо, только в тех местах, где она требовалась авторам языка на стадии, когда кроме них на нём никто не писал.
Неясно, почему нельзя сделать второй слой API - stdio2, stdlib2 или просто добавить в них
>А есть в сишке безопасный способ ввода строки без лишнего пердолинга?
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
Reads data from the given stream into the array pointed to by ptr.
Return Value
The total number of elements successfully read are returned as a size_t object, which is an integral data type. If this number differs from the nmemb parameter, then either an error had occurred or the End Of File was reached.
POSIX read
read(2) - Linux man page
Name
read - read from a file descriptor
Synopsis
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
int fd file descriptor is an integer and not a file pointer. The file descriptor for stdin is 0
void *buf pointer to buffer to store characters read by the read function
size_t count maximum number of characters to read
Description
read() attempts to read up to count bytes from file descriptor fd into the buffer starting at buf.
On files that support seeking, the read operation commences at the current file offset, and the file offset is incremented by the number of bytes read. If the current file offset is at or past the end of file, no bytes are read, and read() returns zero.
If count is zero, read() may detect the errors described below. In the absence of any errors, or if read() does not check for errors, a read() with a count of 0 returns zero and has no other effects.
If count is greater than SSIZE_MAX, the result is unspecified.
Это правда. По этой причине я ебал json, например.
В сишке же сериализация из коробки. Если ты умеешь управлять align (кажется, что все компиляторы дают такую возможность), то зачем вообще текстовые файлы?
>MIPS, PowerPC, Alpha, Itanium
Умерли же все, нет? Я как-то зырил серию лекций какого-то профессора про архитектуру компов (очень пиздатую кстати, он там нормально объяснил устройство DRAM, например).
Он грустил о MIPS. Говорил, очень хорошая архитектура, но уже никому почти не нужна.
W2K был под Alpha, прыщи были под PPC (чтобы портануться под MAC, по этой причине завезли фрейм буфер кстати), но потом всё
Предлагаю модификацию сишки: разрешить использовать многобайтовые числа только для вспомогательных переменных в арифметических выражениях. Брать указатель можно только на char, массивы можно собирать только из чаров, ввод-вывод можно только чарами.
Вот да.
Всем хватит 256 символов. И чисел.
Если кто-то настолько туп, что не способен осилить английский, или настолько жаден, что ему мало 256, то такой питух нам не нужен
Set the endianness bit in the CPSR, without affecting any other bits in the CPSR.
SETEND cannot be conditional, and is not permitted in an IT block.
Show/hideSyntax
SETEND specifier
where: specifier is one of:
BE Big-endian.
LE Little-endian.
Show/hideUsage
Use SETEND to access data of different endianness, for example, to access several big-endian DMA-formatted data fields from an otherwise little-endian application.
Show/hideArchitectures
This ARM instruction is available in ARMv6 and above.
This 16-bit Thumb instruction is available in T variants of ARMv6 and above, except the ARMv6-M and ARMv7-M architectures.
There is no 32-bit Thumb version of this instruction.
Example
SETEND BE ; Set the CPSR E bit for big-endian accesses
LDR r0, [r2, #header]
LDR r1, [r2, #CRC32]
SETEND le ; Set the CPSR E bit for little-endian accesses for the
; rest of the application
Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or the end-of-file is reached, whichever happens first.
A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.
TEH3OPHblu_nemyx # 0
bormand # 0
666_N33D135 # 0
https://govnokod.ru/24840
TEH3OPHblu_nemyx # 0 ⇈
TEH3OPHblu_nemyx # 0
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
https://ideone.com/ROYHNd
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
• gets не проверяет размер буфера, возможно переполнение.
• gets_s есть не во всех библиотеках (ввели в C11, но до сих пор где-нибудь может отсутствовать).
• fgets проверяет размер, но может вернуть результат с символом перевода строки, а может без.
MAKAKA # 0 ⇈
guest # 0 ⇈
MAKAKA # 0 ⇈
666_N33D135 # 0 ⇈
666_N33D135 # 0 ⇈
1024-- # 0 ⇈
Однако, я бы возвращал количество считанных символов вместо питушарского указателя на саму строку, который никому не нужен. Это даёт O(1) накладных расходов, но избавляет от пердолинга с O(N) strlen получившейся питушни.
guest # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
1024-- # 0 ⇈
какую-то его версию, которая не ворвращает NULL
> однострочные хаки
Причём эта недофункциональщина встречается только в некоторых функциях. Видимо, только в тех местах, где она требовалась авторам языка на стадии, когда кроме них на нём никто не писал.
Неясно, почему нельзя сделать второй слой API - stdio2, stdlib2 или просто добавить в них
guest # 0 ⇈
я уже и так передал питухам указатель на строку, и они ее заполнили
на кой хуй мне еще один указатель? чтобы я еще раз длину строки проверял, которрая у нультерминейтед O(N)?
3.14159265 # 0 ⇈
Видимо они ожидают посимвольного чтения и парсинга буферизированного потока.
3.14159265 # 0 ⇈
POSIX read
MAKAKA # 0 ⇈
3.14159265 # 0 ⇈
guest # 0 ⇈
Кстати, что такое stdin в одинарных кавычках?
3.14159265 # 0 ⇈
NAME
fread, fwrite - binary stream input/output
fgets питушня заточенная на текстовые данные. Потому всякие \n.
MAKAKA # 0 ⇈
Велдан всегда будет с переводом, а raw -- нет?
А ведь есть еще штольмановский getline...
3.14159265 # 0 ⇈
Опять же неразумные питузы клевали и оплевывали Царя, вместо того чтобы внимать его мудрому Слову.
MAKAKA # 0 ⇈
В сишке же сериализация из коробки. Если ты умеешь управлять align (кажется, что все компиляторы дают такую возможность), то зачем вообще текстовые файлы?
3.14159265 # 0 ⇈
MAKAKA # 0 ⇈
Ну хотя да, наверное если у меня
то будут проблемы. Кстати, а у кого порядок байт отличается из современных cpu? Кроме x86 и ARM есть что-то? Какой порядок у ARM?
TEH3OPHblu_nemyx # 0 ⇈
guest # 0 ⇈
Жалко спарк конечно (хорошая архитектура, умевшая execute xor write еще в 90-е), но красота требует жертв
TEH3OPHblu_nemyx # 0 ⇈
Похоже, ARM — единственная выжившая платформа с переключателем порядка байтов.
guest # 0 ⇈
Умерли же все, нет? Я как-то зырил серию лекций какого-то профессора про архитектуру компов (очень пиздатую кстати, он там нормально объяснил устройство DRAM, например).
Он грустил о MIPS. Говорил, очень хорошая архитектура, но уже никому почти не нужна.
W2K был под Alpha, прыщи были под PPC (чтобы портануться под MAC, по этой причине завезли фрейм буфер кстати), но потом всё
TEH3OPHblu_nemyx # 0 ⇈
А чем интересна эта архитектура?
guest # 0 ⇈
https://habr.com/ru/post/433524/
TEH3OPHblu_nemyx # 0 ⇈
Есть реальные примеры киллер-фич архитектуры «MIPS»?
3.14159265 # 0 ⇈
https://govnokod.ru/26528#comment536094
Noodles # 0 ⇈
сВАЕВО РАДНОГА ЕЗЫКА НЕ ЗНАТЬ ПАЗОР!!!11
3.14159265 # 0 ⇈
Можно
См. TCP/IP.
https://tools.ietf.org/html/rfc1700 Есть SMB, но то как правильно замечено виндузятные еретики.
guest # 0 ⇈
3.14159265 # 0 ⇈
Опять же читаем изречения Царя о полезных структурах данных.
Массиву байт например насрать на их сетевой порядок.
А всё остальное от лукавого.
Впрочем какой-нибудь bswap ещё никому не делал хуже.
guest # 0 ⇈
3.14159265 # 0 ⇈
Использовать две ячейки байтового массива!
guest # 0 ⇈
Паттерн Лохи:
TEH3OPHblu_nemyx # 0 ⇈
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Noodles # 0 ⇈
Stop all of your coding, 'cause your code smells like "govno"!
MAKAKA # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
TOPT # 0 ⇈
Noodles # 0 ⇈
Noodles # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
guest # 0 ⇈
Всем хватит 256 символов. И чисел.
Если кто-то настолько туп, что не способен осилить английский, или настолько жаден, что ему мало 256, то такой питух нам не нужен
TEH3OPHblu_nemyx # 0 ⇈
TIFF-файлы были с сигнатурой «MM» (от слова «Motorola») и «II» (от слова «Intel»), указывающей на порядок байтов в многобайтовых числах.
TEH3OPHblu_nemyx # 0 ⇈
1024-- # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
Set the endianness bit in the CPSR, without affecting any other bits in the CPSR.
SETEND cannot be conditional, and is not permitted in an IT block.
Show/hideSyntax
SETEND specifier
where: specifier is one of:
BE Big-endian.
LE Little-endian.
Show/hideUsage
Use SETEND to access data of different endianness, for example, to access several big-endian DMA-formatted data fields from an otherwise little-endian application.
Show/hideArchitectures
This ARM instruction is available in ARMv6 and above.
This 16-bit Thumb instruction is available in T variants of ARMv6 and above, except the ARMv6-M and ARMv7-M architectures.
There is no 32-bit Thumb version of this instruction.
Example
MAKAKA # 0 ⇈
A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.
666_N33D135 # 0 ⇈
guest # 0 ⇈
а то развел пиздеж тут
666_N33D135 # 0 ⇈
KOPOHABuPYC # 0 ⇈
Noodles # 0 ⇈
уМРИ ЗАРАЗА!!11
gost # 0 ⇈
666_N33D135 # 0 ⇈
MAKAKA # 0 ⇈
почему 15, а не 0xF?
Почему функции, а не макросы с инлайном?
TEH3OPHblu_nemyx # 0 ⇈
MAKAKA # 0 ⇈
666_N33D135 # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
Кстати, по-стандарту гарантируется ли, что истина обязательно именно 1? -1 быть не может?
gost # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈
666_N33D135 # 0 ⇈
У них даже своей учётки нет.
666_N33D135 # 0 ⇈
MAKAKA # 0 ⇈
1024-- # 0 ⇈
KOPOHABuPYC # 0 ⇈
Аллокатор, вовзращащий указатель на 1 элемент массива, заполненного массивами.