- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int perevod(char a)
{
switch (a)
{
case 'A': {return 1; break;}
case 'B': {return 2; break;}
case 'C': {return 3; break;}
case 'D': {return 4; break;}
case 'E': {return 5; break;}
case 'F': {return 6; break;}
case 'G': {return 7; break;}
case 'H': {return 8; break;}
}
return 0;
}
int proverka(char a)
{
switch (a)
{
case '1': {return 1; break;}
case '2': {return 2; break;}
case '3': {return 3; break;}
case '4': {return 4; break;}
case '5': {return 5; break;}
case '6': {return 6; break;}
case '7': {return 7; break;}
case '8': {return 8; break;}
}
return 0;
}
int main()
{
string s;
cin >> s;
int x1, x2, y1, y2;
x1=perevod(s[0]);
x2=perevod(s[3]);
y1=proverka(s[1]);
y2=proverka(s[4]);
if(s.length() != 5 || x1 == 0 || x2 == 0 || y1 == 0 || y2 == 0||s[2]!='-')
{
cout << "ERROR";
}
else{
if(abs(x2 - x1) == 1 && abs(y2 - y1) == 2 || abs(x2 - x1) == 2 && abs(y2 - y1) == 1)
{
cout << "YES";
}
else
{
cout << "NO";
}
}
return 0;
}
https://govnokod.ru/24840
https://ideone.com/ROYHNd
• gets не проверяет размер буфера, возможно переполнение.
• gets_s есть не во всех библиотеках (ввели в C11, но до сих пор где-нибудь может отсутствовать).
• fgets проверяет размер, но может вернуть результат с символом перевода строки, а может без.
Однако, я бы возвращал количество считанных символов вместо питушарского указателя на саму строку, который никому не нужен. Это даёт O(1) накладных расходов, но избавляет от пердолинга с O(N) strlen получившейся питушни.
какую-то его версию, которая не ворвращает NULL
> однострочные хаки
Причём эта недофункциональщина встречается только в некоторых функциях. Видимо, только в тех местах, где она требовалась авторам языка на стадии, когда кроме них на нём никто не писал.
Неясно, почему нельзя сделать второй слой API - stdio2, stdlib2 или просто добавить в них
Видимо они ожидают посимвольного чтения и парсинга буферизированного потока.
POSIX read
NAME
fread, fwrite - binary stream input/output
fgets питушня заточенная на текстовые данные. Потому всякие \n.
Велдан всегда будет с переводом, а raw -- нет?
А ведь есть еще штольмановский getline...
Опять же неразумные питузы клевали и оплевывали Царя, вместо того чтобы внимать его мудрому Слову.
В сишке же сериализация из коробки. Если ты умеешь управлять align (кажется, что все компиляторы дают такую возможность), то зачем вообще текстовые файлы?
Ну хотя да, наверное если у меня
то будут проблемы. Кстати, а у кого порядок байт отличается из современных cpu? Кроме x86 и ARM есть что-то? Какой порядок у ARM?
Похоже, ARM — единственная выжившая платформа с переключателем порядка байтов.
А чем интересна эта архитектура?
Есть реальные примеры киллер-фич архитектуры «MIPS»?
https://govnokod.ru/26528#comment536094
сВАЕВО РАДНОГА ЕЗЫКА НЕ ЗНАТЬ ПАЗОР!!!11
Можно
См. TCP/IP.
https://tools.ietf.org/html/rfc1700 Есть SMB, но то как правильно замечено виндузятные еретики.
Опять же читаем изречения Царя о полезных структурах данных.
Массиву байт например насрать на их сетевой порядок.
А всё остальное от лукавого.
Впрочем какой-нибудь bswap ещё никому не делал хуже.
Использовать две ячейки байтового массива!
Stop all of your coding, 'cause your code smells like "govno"!
TIFF-файлы были с сигнатурой «MM» (от слова «Motorola») и «II» (от слова «Intel»), указывающей на порядок байтов в многобайтовых числах.
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
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.
уМРИ ЗАРАЗА!!11
почему 15, а не 0xF?
Почему функции, а не макросы с инлайном?
Кстати, по-стандарту гарантируется ли, что истина обязательно именно 1? -1 быть не может?
У них даже своей учётки нет.
Аллокатор, вовзращащий указатель на 1 элемент массива, заполненного массивами.