C Programming Language #28

 Аноним OP 14/02/18 Срд 20:58:49 #1 №1138954 
C Programming Language.png
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ или http://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Годное пособие для гуманитариев: http://web.archive.org/web/20160727235220/http://c.learncodethehardway.org/book/ (автор внезапно захотел денег)
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

Чем конпелировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №25: https://arhivach.org/thread/303902/
- №26: https://arhivach.org/thread/315652/
- №27: https://arhivach.org/thread/325831/

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 14/02/18 Срд 21:02:00 #2 №1138955 
Плюсы не нужны, когда есть JS.
Аноним 15/02/18 Чтв 01:16:29 #3 №1139069 
>>1138955
Вилки не нужны, когда есть ботинки.
Аноним 15/02/18 Чтв 12:16:48 #4 №1139209 
>>1139069
Ботинки не нужны имхо.
Аноним 16/02/18 Птн 10:36:08 #5 №1140075 
Чтобы всю ламповость С понять, надо пильнуть на нем какую-нибудь матан задачку, из серии поиска больших простых чисел.
Аноним 16/02/18 Птн 11:31:20 #6 №1140090 
Есть текстовый файл вида номер - текст. Мне надо чтобы ты вводил номер и получал в ответ текст из файла в консоль. Как проще всего это сделать? Прайм пока прочитал до 4 главы, стоит прочитать 13 главу про файловый ввод-вывод?
Аноним 16/02/18 Птн 11:36:39 #7 №1140094 
>>1140090
Регулярками. grep 45 path/to/file
Аноним 16/02/18 Птн 11:37:45 #8 №1140096 
>>1140094
Что за регулярки и где про это прочитать?
Аноним 16/02/18 Птн 11:44:29 #9 №1140102 
>>1140096
Регулярные выражения — regular expression. man grep, findstr /?
Аноним 16/02/18 Птн 11:51:27 #10 №1140111 
>>1140102
Окей, а 13 глава прайма поможет мне сделать что я хочу?
Аноним 16/02/18 Птн 11:57:42 #11 №1140116 
>>1140111
Йес оф корс.
Аноним 16/02/18 Птн 13:44:39 #12 №1140172 
>>1140116
Чет прочитал главу и не нашел как там найти нужное слово в файле
Аноним 16/02/18 Птн 14:14:00 #13 №1140195 
>>1140172
Ты уде читал главу, про логические операторы? А про работу со строками?

Тебе всего то надо получить со входа данные в виде номера и по нему искать. Жля этого делаешь цикл до конца файла и через if чекаешь переменную с искомой подстрокой во всех строках
Аноним 16/02/18 Птн 15:25:10 #14 №1140248 
>>1140195
Пока нет, но уже пользовался условными операторами. Я сам хотел сделать массив, куда пихать по 3 символа из файла и сравнивать каждые 3 символа массив с числом, который ввел пользователь. И после того как совпало, то выводить дальнейшие символы на экран. Как тебе такая идея?
Аноним 16/02/18 Птн 15:43:39 #15 №1140262 
>>1140248
Хуевая.
Аноним 16/02/18 Птн 15:51:42 #16 №1140273 
>>1140262
Почему?
Аноним 16/02/18 Птн 16:11:17 #17 №1140292 
Screenshot2018-02-16-20-09-35-423com.n0n3m4.droidc.png
Screenshot2018-02-16-20-09-25-685com.n0n3m4.droidc.png
Эм, какого хуя?
Аноним 16/02/18 Птн 16:59:47 #18 №1140325 
>>1140273
Потому что тебе надо лучше читать файл в цикле по 20 строк и делать проверку, потом стирать из памяти и продолжать читать файл. Но это все хуйня.

Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД, а не страдай хуйнец с парсингом.
Аноним 16/02/18 Птн 17:00:33 #19 №1140327 
>>1140292
Там нде сканф &s в конце надо
Аноним 16/02/18 Птн 19:23:00 #20 №1140425 
>>1140325
> Потому что тебе надо лучше читать файл в цикле по 20 строк и делать проверку, потом стирать из памяти и продолжать читать файл. Но это все хуйня.
Это еще зачем? И как ты найдешь нужное число среди 20 строк?

> Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД, а не страдай хуйнец с парсингом.
Я это делаю чисто для фана, так что мне не всралась субд, я хочу сам на С написать программу.

Так, делаю наброски. Сделал преобразование введеного числа в массив. Это получилось.

Но у меня не получается закончить while - при условии ch! = EOF цикл продолжает выдавать неизвестные символы бесконечно. Опытным путем выяснил что неизвестному символу соответствует номер 255 и с условием ch! = 255 цикл завершается.

Откуда берутся эти символы, если в текстовом файле последний символ - Z?

Вот сам код:

#include <stdio.h>

int main(void)
{

char num[5];
int ch;
int i;
char mm[3];
char temp[100];

puts("input: ");
gets(num);

for (i=0; i<3; i++)
{
mm = num;
printf("mm[%d]=%c \n",i , mm);
}

//основа
FILE * fp;
fp = fopen("wicked.txt", "r");

while(ch != 255)
{
for (i=0; i<80; i++)
{
temp= getc(fp);
ch= temp;
putchar(temp);
}
}

printf("\n""%d", ch);

scanf ("%d", &num);
return 0;
}
Аноним 16/02/18 Птн 19:28:36 #21 №1140429 
Screenshot2018-02-16-23-25-11-849com.n0n3m4.droidc.png
>>1140425
Вот что на выходе получается. Как я понимаю, эти неизвестные символы появляются после того как у цикла for закончились символы из файла, но он все равно делает цикл 80 раз, верно?

Что с этим делать? Сделать условием цикла ch! = 90 (что соответствует заглавной Z) не получается, цикл на Z не останавливается.
Аноним 16/02/18 Птн 20:26:07 #22 №1140456 
Обмазываюсь GDB, хотел бы вкатиться в системное программирование и обратную разработку. Gdb виндовой, шел в комплекте с mingw. Вопрос - какого хуя не работает attach [pid] когда я пытаюсь подключиться к половине софта? Can't attach to process и все. Восьмерка x64, я админ, всё норм.
Аноним 16/02/18 Птн 20:42:14 #23 №1140464 
>текстовый файл вида номер - текст
>используй регулярные выражения
> Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД
kek
Аноним 16/02/18 Птн 21:01:02 #24 №1140470 
Screenshot2018-02-17-00-57-25-544com.n0n3m4.droidc.png
>>1140429
Сделал вывод значений через каждые 3 символа. В файле первач строка написана как 001 fi
Аноним 16/02/18 Птн 21:03:18 #25 №1140475 
>>1140470

Какого хуя мой пост порезался? В файле написано "001 fi
Аноним 16/02/18 Птн 21:04:30 #26 №1140477 
Screenshot2018-02-17-01-04-11-240com.mishiranu.dashchan.png
>>1140475
Сука!

Какого хуя мой пост порезался? В файле написано "001 fi
Аноним 16/02/18 Птн 21:14:36 #27 №1140483 
>>1140292
Анончик, подскажи, куда складываются скомпилированные программы в этом c4droid? И как их потом запускать? Хелпа или фака нет
Аноним 16/02/18 Птн 21:34:20 #28 №1140491 
>>1140470
>>1140477
>>1140483
в армии? в тюрьме?
Аноним 16/02/18 Птн 21:36:54 #29 №1140492 
>>1140491
На том свете...
Аноним 16/02/18 Птн 21:42:46 #30 №1140495 
>>1140491
Нет, просто угорел с идеи писать на си прямо на телефоне. Но по ходу не работает ни хера.
Вроде разобрался с компиляцией и сохранением. Надо экспорт делать. Как теперь запустить программу с параметрами?
Аноним 16/02/18 Птн 21:57:31 #31 №1140504 
>>1140495
Хуясе, работает. Лонгтап на "Run" даёт вводить аргументы.
Аноним 16/02/18 Птн 22:00:02 #32 №1140505 
>>1140491
>в армии? в тюрьме?
вна украине
Аноним 16/02/18 Птн 22:07:03 #33 №1140509 
>>1140456
> я админ
У тебя команденая строка с elevated привилегиями (от админа) запущена, или просто по клику?
Аноним 16/02/18 Птн 22:13:14 #34 №1140513 
>>1140509
Вот тоже про это думал, запускал от админа - ноль эффекта.
Аноним 17/02/18 Суб 06:49:25 #35 №1140681 
изображение.png
Ебанёшься с этими вашими сями.
Короче, пишу лабу в студии, в дебажном режиме. Уже всё полностью оттестил, всё работает, включаю релизный. И тут хуяк, 50 ошибок при сборке, про не несовпадение типов и про не заполненные заголовки.
Ок, исправил, запустил, всё вроде норм. Переставляю режим сборки снова в Debug, пытаюсь собрать, а оно хуяк и вон что выдаёт, типа константы несколько раз определяются. Как так получается я не очень понял, и почему то оно выдаётся только в режиме сборки Debug x86. Под 64 спокойно собирается. Вот как так то?
Аноним 17/02/18 Суб 07:17:27 #36 №1140683 
>>1140681
Хуй знает как, но оно решилось. Ссылки я нигде не убирал, может просто пересборка помогла. Интелисенс с сями просто отвратно работает, всё таки
Аноним 17/02/18 Суб 09:52:26 #37 №1140713 
>>1140470
>>1140429
Бамп вопросу
Аноним 17/02/18 Суб 16:33:21 #38 №1140882 
>>1140681
>студии
говноед, уходи
Аноним 17/02/18 Суб 18:59:20 #39 №1140968 
>>1140713
ЯННП, что ты хочешь сделать, где проверка на EOF, зачем странные присваивания массива к массиву, что у тебя там за компилятор, и вообще, почему ты делаешь это на телефоне, а не как люди. Попробуй выложить на пастебин исходник, текстовый файл и что ты хочешь получить, а мы обосрем.
Аноним 17/02/18 Суб 19:33:44 #40 №1140986 
Зачем Си когда есть С++? Я не хочу затевать холивар, мне просто искренне интересно.
Аноним 17/02/18 Суб 19:39:02 #41 №1140989 DELETED
Блять, мой кот постоянно урчит. Я подобрал его с улицы и он не может прекратить урчать. Что не так? Он болен?
Аноним 17/02/18 Суб 19:39:14 #42 №1140990 
>>1140986
Затем, что выучить Си возможно. Крестов целиком не знает даже WG21.
Аноним 17/02/18 Суб 19:46:18 #43 №1140995 
>>1140990
Значит если смотреть объективно, то особой разницы нет?
Аноним 17/02/18 Суб 19:51:36 #44 №1141001 
>>1140995
Ну я предпочитаю понимать, что в коде происходит. В крестах код может выглядеть просто, но иметь овердохуя подводных камней.
Аноним 17/02/18 Суб 19:54:04 #45 №1141002 
>>1141001
А в плане востребованности? На рынке труда кого больше ищут и кому больше платят?
Аноним 17/02/18 Суб 19:56:22 #46 №1141003 
>>1141002
на "рынке труда" никого уже последние года не ищут, а выбирают лучших
Аноним 17/02/18 Суб 20:01:41 #47 №1141004 
>>1141003
А зарплата у лучших крестовиков или сишников будет лучше?
То есть лучше не вкатываться в программирование и идти в каких-нибудь экономистов?
Аноним 17/02/18 Суб 20:06:49 #48 №1141006 
>>1141004
Не советую вкатываться в си или кресты, если не интересует эмбеддед. Возьми что-нибудь более востребованное. Посмотри вакансии - сейчас кругом веб.
Аноним 17/02/18 Суб 20:10:43 #49 №1141008 
>>1141006
Это до очередного доткома. Нейроночки, вычисления для суперкомпьютеров и хуева тонна других областей, где этот веб на хуй не нужен. Самое главное туда попасть, но если учишь си на харкаче, то конечно лучше вкатываться в веб. Серьезные люди в универ ходят для наработки связей, чтобы на практику куда-нибудь взяли на проект. Все эти мантры про универ не нужен — бред. Универ нужен для социализации, а знания все великие программеры так-то черпали не толькл от преподов или криг, а наступая на грабли.
Аноним 17/02/18 Суб 20:13:24 #50 №1141009 
>>1141008
Дотком? Was ist das?
Аноним 17/02/18 Суб 20:14:46 #51 №1141010 
>>1141009
Вот и выросло поколение. В гугол животное.
Аноним 17/02/18 Суб 20:16:15 #52 №1141012 
>>1141010
Сука, я блять понимаю, что такое доткомы, просто оно никак не вписывается со всем остальным твоим предложением, поэтому я попросил узнать твою локальную интерпретацию этого понятия, епты.
Аноним 17/02/18 Суб 20:18:29 #53 №1141015 
>>1141008
> где этот веб на хуй не нужен
Это ты так считаешь. Всякие низкоуровневые либы пишутся не так уж и часто, а вот дергать за них можно хоть жаваскриптом.
Аноним 17/02/18 Суб 20:23:22 #54 №1141018 
>>1141012
Рынок переполнен нахуй ненужными веб макаками. Спрос ниже предложения. Демпингуют все кто только может, даже лебедев.

Косвенно об этом и ютуб говорит, признавая факт, что реальные покупатели рекламы уходят, и банеры в адвордсе а-ля улетный лендинг за 10к ₽ под ключ.
Аноним 17/02/18 Суб 20:23:30 #55 №1141019 
>>1141002
Аноним 17/02/18 Суб 20:25:45 #56 №1141022 
>>1141018
> Рынок переполнен нахуй ненужными веб макаками
Рынок может быть переполнен сайтами. Но вот вакансий для макак овердохуя, а вакансию для сишника ты хуй найдешь сейчас. И даже если найдешь, окажется, что ты не соответствуешь заявленным требованиям.
Аноним 17/02/18 Суб 20:26:35 #57 №1141024 
>>1141015
Это ты переоцениваешь. Есть пласт областей, где это ненужно. Теже драйверописатели или бигдата или узконаправленный софт для управления работой схд под гипервизором...
Аноним 17/02/18 Суб 20:31:38 #58 №1141028 
>>1141022
Так вакансии все за еду, а «писать» три вопроса на стаковерфлоу + 2 плагина из npm.

Касаемо Си вакансий такая ситуация, потому что их и на рынок не выводят, ибо общение как в секте.

Хочешь работу? Ходи на митапы сишников, светись как только можешь и рассылай резюме сам в конторы.

А почему не соответствуешь, знаешь? Потому что сишники это в основном задроты матана, там особый круг общения, который нужно поддерживать, чтобы не деградировать.

Вы можете мне не верить и шуточки шутить, с картинками смешными, но знайте, в первую очередь живое общение в среде себе подобных складывает о вас впечатление, а не ваши копипасты в свой гит.
sageАноним 17/02/18 Суб 20:38:30 #59 №1141036 
>>1141028
> Так вакансии все за еду
Ценник примерно одинаковый, что для фронтэндера, что для байтоеба.

> сишники это в основном задроты матана
Истории все охуительней. Детектирую студента, бывшего олимпиадника.
Аноним 17/02/18 Суб 20:40:23 #60 №1141038 
>>1141036
Будь по твоему.
Аноним 17/02/18 Суб 20:54:34 #61 №1141051 DELETED
>>1141008
Прошу всех меня выслушать. Мое сообщение, возможно, покажется вам странным и необычным, но я прошу вас, прошу вас от всего сердца прочитать его, вникнуть в него.
Начнем с простого: Я бегемот. Да-да, я то самое огромное жирное млекопитающее. Англичане зовут меня hippo, а извращенные пидорасы гиппопотамом. И есть у меня одна проблема. Я люблю кушать. Просто я самый настоящий гений в этом деле! Я, черт возьми, лучший!
Аноним 17/02/18 Суб 21:02:59 #62 №1141058 
Как заставить gcc высрать ту часть препроцессирования, которую он смог сделать, даже если <govno.h> не найдено, и еррор посему в итоге.
Аноним 17/02/18 Суб 21:05:53 #63 №1141061 
Как в C включить поддержку русского языка?
Аноним 17/02/18 Суб 21:13:30 #64 №1141065 
>>1141058
cpp file.c (препроцессирование в stdout), cc -E file.c (то же, что и предыдущее), cc -save-temps file.c (искать file.i рядом с file.c)

>>1141061
> включить поддержку русского языка
Зависит от ОС. Гугли setlocale +названиеос.
Аноним 17/02/18 Суб 21:15:51 #65 №1141071 
>>1141065
Мне нужно в андроиде подключить русский язык.
Аноним 17/02/18 Суб 21:27:53 #66 №1141077 
>>1141061
setlocale(LC_ALL, "Russian");
Аноним 17/02/18 Суб 22:25:36 #67 №1141128 
Какими IDE кто тут пользуется?
Аноним 17/02/18 Суб 22:29:48 #68 №1141131 
>>1141128
никакими
Аноним 17/02/18 Суб 22:34:50 #69 №1141134 
>>1141131
Лох
Аноним 17/02/18 Суб 22:34:54 #70 №1141135 
>>1141128
Какими, к хуям, IDE? Vi наше всё. В другом терминале запускаю скрипт сборки, в третьем в links тред открыт.
Аноним 17/02/18 Суб 22:38:29 #71 №1141138 
>>1141135
А ещё есть Ctrl+z, bg и fg что позволяет часто ограничиться одним терминалом.
Аноним 17/02/18 Суб 22:39:59 #72 №1141139 
>>1141138
>терминал
CMD KRUTO
Аноним 17/02/18 Суб 22:42:40 #73 №1141144 
>>1141138
%
Аноним 17/02/18 Суб 22:49:53 #74 №1141150 
>>1141139
Что ты сказать-то пытаешься?
Аноним 18/02/18 Вск 00:03:07 #75 №1141200 
>>1141128
emacs
Аноним 18/02/18 Вск 04:40:55 #76 №1141305 
Линуксовая прога на входе получает символы вида \u0424. Как их проще всего декодировать, чтобы потом вывести в читаемом виде?
Аноним 18/02/18 Вск 06:04:27 #77 №1141319 
>>1141305
Именно в таком виде? Ну так декодируй, просто же. Сматчишь \u, проверишь, что потом 4 isxdigit() подряд, и либо сам число посчитаешь, либо strtoul(str, 16). Ну а потом можешь либо printf c %ls и массив wchar_t, который у тебя получился, либо в UTF-8 закодируй и обычным %s выводи.
Аноним 18/02/18 Вск 07:59:35 #78 №1141329 
>>1141305
1. Ну типа берёшь такой вот питоновский код https://wandbox.org/permlink/Ockamqto6hfwc3hE
s = input()
print(s.encode('utf-8').decode('unicode-escape'))

2. Потом типа ищёшь/пишешь реализацию popen2/3 на C

3. Споунишь (проверочное слово spawn) из C-проги процесс питона, отправляешь символы вида \u0424 ему в stdin, забираешь резульатт из stdout

Проще некуда.

Альтернативный вариант: встраиваешь в свою прогу интерпретатор питона через его C API.
Аноним 18/02/18 Вск 12:33:01 #79 №1141382 
>>1141077
Не работает нифига.
Аноним 18/02/18 Вск 12:54:10 #80 №1141397 
>>1141319
Спасибо, получилось.
Аноним 18/02/18 Вск 19:53:43 #81 №1141607 
Image 135.png
>>1141077
А в винде как сделать? Вот этот код
#include <stdio.h>
#include <locale.h>

int main(int argc, char argv[])
{
setlocale(LC_ALL, "Rus");
printf("Привет мир! \n");

int a;
scanf("%d", &a);
return 0;
}

выдает то что на скрине
Аноним 18/02/18 Вск 20:21:08 #82 №1141621 
>>1141607
А в винде все сложно. Зависит от компилятора. Основная проблема в том, что виндовая консоль не умеет в UTF-8. Варианты:
1) Сохранить исходники в кодировке Windows-1251, а не в UTF-8. Сделать setlocale(LC_CTYPE, "1251") или setlocale(LC_CTYPE, "866").
2) Использовать гораздо менее известный, зато немного более правильный способ: исходники в UTF-8, локаль Rus, но с ключиком -fexec-charset=cp866 Для этого тебе понадобится гцц или шланг (в вижуалстудио тоже можно задать Execution Charset в свойствах проекта, как в других компиляторах - не знаю).
Аноним 18/02/18 Вск 20:30:15 #83 №1141627 
>>1141621
>Сохранить исходники в кодировке Windows-1251, а не в UTF-8.
Это как?
>Сделать setlocale(LC_CTYPE, "1251") или setlocale(LC_CTYPE, "866").
не помогает.

Аноним 18/02/18 Вск 20:34:45 #84 №1141629 
>>1141627
> Сохранить исходники в кодировке Windows-1251, а не в UTF-8.
> Это как?
Боже. Ну покажи скриншот своего редактора. Где код пишешь?
Аноним 18/02/18 Вск 20:40:44 #85 №1141631 
Image 139.png
>>1141629
В CodeLite
Аноним 18/02/18 Вск 20:48:48 #86 №1141637 
>>1141631
сразу уточню, что менял в правом углу UTF-8 на Windows-1251, но результата это не дало.
Аноним 18/02/18 Вск 20:50:30 #87 №1141640 
>>1141631
Вон там справа внизу окна у тебя UTF-8 написано. Попробуй потыкать, хуй знает. Справку по редактору найди.
Аноним 18/02/18 Вск 20:51:18 #88 №1141642 
>>1141640
>>1141637
Аноним 18/02/18 Вск 20:58:11 #89 №1141644 
>>1141642
Ну хуй знает, должно работать.
Аноним 18/02/18 Вск 23:42:40 #90 №1141739 
>>1141607
Запускай в powershell, там вроде проблем нет с ютф-8. Как бы повершелл в дрисятке по умолчанию идет вместо смд.ехе, на хуй ты это говно мамонта откопал?
sageАноним 19/02/18 Пнд 00:03:52 #91 №1141754 
>>1141739
> там вроде проблем нет с ютф-8
Там есть проблема. Оно умеет в CHCP 65001, да, но по умолчанию там вообще какая-то хуета, даже не 1251/866. Каждый раз менять кодировку заебешься, впрочем как и рассказывать пользователям, почему у них крякозябры. К тому же, шелл, который иногда открывается сразу, а иногда при старте неведомо чем занят секунд по пять, шеллом называться не имеет права.
Аноним 19/02/18 Пнд 00:12:50 #92 №1141768 
>>1141754
По 5 секунд он открывается подгружая модули. Даже на ссд в рэйде и 32 Гб ОЗУ. Но это майкрософт, у них это норма.

Касаемо кодировки боюсь соврать, но в шелле более полная поддержка ютф-8. Даже переключать не надо. Элементарно делаешь

dir /s . > report.txt

И смотришь хекс редактором на заголовок файла или в текстовом редакторе.

chcp это архаика из смд.ехе.

Ставь альтернативный шелл.
Аноним 19/02/18 Пнд 00:13:20 #93 №1141769 
Здаров, ушлепки. Зашел перднуть в ваш тред. Ненавижу С.
Аноним 19/02/18 Пнд 00:20:58 #94 №1141772 
image.jpeg
>>1141769
Красава, спасибо, что отметился, а теперь катись к хуям.
sageАноним 19/02/18 Пнд 00:45:06 #95 №1141780 
>>1141768
> Но это майкрософт, у них это норма.
сmd.exe по-прежнему запускается мгновенно. У того же самого майкрософта.

> dir /s . > report.txt
И нахуй нужен "шелл", если он не может даже отображать текст?

> chcp это архаика из смд.ехе.
exe-файлы, у которых стоит /SUBSYSTEM:CONSOLE, открываются в виндовой консоли, а не в этом дерьме, которое к ОС даже прикрутить нормально не удосужились. В консоли нет UTF-8, в консоли кодировки по-прежнему переключаются через chcp (и соответствующими функциями API). Когда в качестве системной консоли прикрутят павершелл, ты будешь рассказывать об архаике. Но не раньше.

> Ставь альтернативный шелл
Ничем не отличается от GUI-приложения, которое рисует свою "консоль" самостоятельно. И настолько же нинужно. Ну то есть, для разработчика очень даже норм, если программа, которая пользуется чем-то нестандартным, дальше его машины не уйдет. ConEmu охуенный, умеет и в ANSI-последовательности, и в UTF-8, и даже в символы двойной ширины.
Аноним 19/02/18 Пнд 04:42:18 #96 №1141838 
>>1141739
А как сделать чтобы мой экзешник открывался в повершелле?
Аноним 19/02/18 Пнд 15:45:11 #97 №1142048 
Такой вопрос - можно ли получить текущее значение даты?
Аноним 19/02/18 Пнд 17:56:48 #98 №1142194 
>>1141607
Поставь себе бубунту в WSL
Аноним 19/02/18 Пнд 18:10:56 #99 №1142213 
>>1142194
Не знаю о чем ты. Я хочу чтобы моя программа переставала работать после определенного периода. Это можно сделать в С?
Аноним 19/02/18 Пнд 18:22:27 #100 №1142221 
>>1142048
Конечно нет. Как ты себе представлешь?
Это что-то из области фантастики.
Аноним 19/02/18 Пнд 18:37:34 #101 №1142235 
>>1142221
По мне так, надо сделать следующую схему:
В программе ставим пока не узнается время панель загрузки и просим подождать некоторое время. Пользователь не выдержит и свернет ее. Но надо оформить дело так, чтобы она продолжала пахать в фоновом режиме (то есть просто уменьшить координаты окна до 0).
Затем надо поставить хук, который будет считывать со страниц браузера при помощи регулярки числа похожие на значения времени. Потом уже получить это значение и дело в шляпе. Задачка-то то простая.
Аноним 19/02/18 Пнд 18:39:42 #102 №1142238 
>>1142235
Может надо написать драйвер, который будет запрашивать у биоса данные о времени?
Аноним 19/02/18 Пнд 18:40:08 #103 №1142239 
>>1142221
>>1142235
Вы сейчас серьезно? Си никак не может узнать текущую дату?
Аноним 19/02/18 Пнд 18:42:10 #104 №1142243 
>>1142221
Нет, ты мылишь загнанно в рамки своих мыслей, освободись и найди *к р е а Думаю, что лучшее решение - написать нейросеть которая по географическим координатам и падению света\положениию солнца будет определять время дня. По крайней мере, мы так получим платформонезависимое ПО.
Аноним 19/02/18 Пнд 18:42:18 #105 №1142244 
>>1142239
Мог бы проиграть, а не дуться тут
Аноним 19/02/18 Пнд 18:43:00 #106 №1142245 
>>1142239
Нет, все проще. Просто обратись по адресу памяти где находится данные о значении времени в ОС и считай оттуда.
Аноним 19/02/18 Пнд 18:43:52 #107 №1142247 
>>1142245
Ты ебу дал? Надо просто написать скрипт на JS, шарпее и интегрировать его с кодом на Си.
Аноним 19/02/18 Пнд 18:45:24 #108 №1142250 
>>1142245
Дамп ядра с опорой на Meltdown подойдёт?
А как потом парсить?
Аноним 19/02/18 Пнд 18:45:56 #109 №1142251 
>>1142243
Что касается мобильных платформ, то одним из решений является фиксация момента вхождения в ночной режим.
Аноним 19/02/18 Пнд 18:47:57 #110 №1142255 
>>1142250
Не будет работать на процессорах AMD! Слишком
костыльное решение, лучше какой-нибудь >>1142235
Аноним 19/02/18 Пнд 18:48:48 #111 №1142259 
>>1142255
А твой хук будет работать на любом браузере?
Аноним 19/02/18 Пнд 18:49:48 #112 №1142260 
Пиздец петросяны повылезали.
Аноним 19/02/18 Пнд 18:49:54 #113 №1142261 
>>1142259
Будет написан хук под все браузеры. Хук лишний написать можно, а твой способ как не старайся не сделай универсальным.
Аноним 19/02/18 Пнд 18:50:40 #114 №1142262 
>>1142261
Но ведь есть ещё Spectre.
Аноним 19/02/18 Пнд 18:51:40 #115 №1142263 
>>1142262
А строковый молот?
Аноним 19/02/18 Пнд 18:52:51 #116 №1142265 
>>1142262
Я слышал, что библиотечная функция основана как раз на ней.
Аноним 19/02/18 Пнд 19:00:45 #117 №1142271 DELETED
ДЕБИЛЫ И ТУПИЦЫ! МЫ ТУТ ЯЗЫК ОБСУЖДАЕМ ПЕТРОСЯНЫ ШКОЛОТА В БЭ НАХУЙ
sageАноним 19/02/18 Пнд 19:07:58 #118 №1142283 
>>1141780
На conemu я и намекал.

По всем остальным пунктам — пошел ты на хуй мудак ебаный, нашелся тут умник хуев. Смд.ехе архаика признано даже в майкрософте. По умолчанию в дрисятке запускается именно повершелл. Как там криворукие макаки пишут, что у них смд вылазиет я хуй его знает, читать мсдн лучше надо. Майки обновляют свои гайды по написанию приложений. Хули ты петух вонючий тут раздухарился я в душе не ебу. Сажи тебе педроте недоношенной.
Аноним 19/02/18 Пнд 19:11:18 #119 №1142288 DELETED
>>1142283

павершелл круто ууууу я буквы умею нажимать уууу
Аноним 19/02/18 Пнд 19:22:36 #120 №1142303 
Как вам CLION?
sageАноним 19/02/18 Пнд 19:22:48 #121 №1142304 DELETED
>>1142288
Говноед, плез, не проецируй свой стиль общения с компьютером.
Аноним 19/02/18 Пнд 19:22:57 #122 №1142305 
>>1142048
time.h: time, localtime, strftime - вот это все.
Аноним 19/02/18 Пнд 19:24:35 #123 №1142309 DELETED
>>1142304
>Говноед
Да, не проецируй свой стиль общения с компьюетом.
Аноним 19/02/18 Пнд 19:25:39 #124 №1142310 DELETED
>>1142048
Можно, __TIME__ предопределнная константа. Вот эта шлюха >>1142305 тоже верный способ дала
sageАноним 19/02/18 Пнд 19:25:51 #125 №1142311 
>>1142283
Ты сейчас качаешь последнюю вижуалстудио и пишешь нам консольное приложение, которое при даблклике запускается в "консоли" повершелла и выводит русский текст, закодированный в UTF-8. Можешь читать MSDN лучше, можешь даже прошение швятому балмеру написать. Не получится - уебывай со своим повершеллом, откуда пришел.
sageАноним 19/02/18 Пнд 19:26:13 #126 №1142314 DELETED
>>1142309
Пошли маневры...
Аноним 19/02/18 Пнд 19:26:30 #127 №1142315 DELETED
>>1142310
Кого шлюхой назвал, блять, чмо красноглазое.
Аноним 19/02/18 Пнд 19:27:42 #128 №1142317 DELETED
>>1142314
Маневрирую к твоей мамаше.
sageАноним 19/02/18 Пнд 19:43:08 #129 №1142344 DELETED
>>1142311
Проститутыч, я тебе не гугол, в нем найдешь ответы на свои вопросы
sageАноним 19/02/18 Пнд 19:44:03 #130 №1142347 DELETED
>>1142315
Тебе, сперма ты перебродившая в лоне мамаши этого >>1142317
Аноним 19/02/18 Пнд 20:06:41 #131 №1142378 DELETED
>>1142347
Сперма перебродила у тебя в бороде.
Аноним 19/02/18 Пнд 22:56:53 #132 №1142515 DELETED
>>1142378
Дать слизать?
Аноним 19/02/18 Пнд 23:24:52 #133 №1142525 DELETED
Опять шлюхи из /b понасрали.
Аноним 20/02/18 Втр 12:09:42 #134 №1142670 DELETED
>>1142515
Не проецируй свои вкусы.
Аноним 20/02/18 Втр 12:45:25 #135 №1142694 
есть ли какой нибудь задачник по си ?а то
в у прата слишком много воды
ни где ни могу найти справочник по си на русском может есть где?
Аноним 20/02/18 Втр 13:33:58 #136 №1142715 
>>1142694
Codeforce.com
Аноним 20/02/18 Втр 15:04:33 #137 №1142763 
https://ideone.com/NFcfka
что не так коомпилятор жалуется на \на цикл getchar хотя правильно на писал
вызов я напишу
учю си в codeBlocks
Аноним 20/02/18 Втр 15:16:31 #138 №1142765 
>>1142763
>учу си в codeBlocks
не твоё это, забей
Аноним 20/02/18 Втр 15:19:44 #139 №1142768 
>>1142763
Даже я, прочитавший недавно 4 главы праты вижу с ходу косяк. Хули ты в символьную константу пытаешься запихнуть строку?
Аноним 20/02/18 Втр 15:26:26 #140 №1142770 
>>1142768
что ты меня путаешь она и будет принимать по 1 символу пока не встретит конец
Аноним 20/02/18 Втр 15:31:57 #141 №1142772 
>>1142770
Йобу дал? Схуяли у тебя S1 и S2 будут принимать более 1 символа?
Аноним 20/02/18 Втр 15:35:10 #142 №1142776 
>>1142772
стого
что%с это символ
а %s строка
ты еыбу дал
я уже делал упражнения
с этим кодом все принимает
Аноним 20/02/18 Втр 15:36:29 #143 №1142778 
>>1142776
Ебать, ты путаешь тип переменной и вид данных, которые выводишь.
Аноним 20/02/18 Втр 15:59:11 #144 №1142787 
>>1142763

> что не так коомпилятор жалуется на \на цикл getchar хотя правильно на писал

>prog.c:12:1: error: function definition is not allowed here
>{
>^
>1 error generated.
Аноним 20/02/18 Втр 15:59:53 #145 №1142788 
>>1142787
>вызов я напишу
Аноним 20/02/18 Втр 16:00:57 #146 №1142789 
>>1142787
Да у него там пиздец ошибок, скобок хуй пойми где и как понаоткрывал.
Аноним 20/02/18 Втр 16:19:02 #147 №1142793 
>>1142776

Ты объявил две переменные размером в один символ. Пытаешься взяв указатель на переменную размером в один байт писать туда строку. Не надо так.

Во-первых, тебе нужно использовать указатели или массивы (указатель звездочка после char массив - после названия переменных квадратные скобочки с числом элементов внутри).


Во-вторых, если используешь указатели, то тебе нужно выделить память функцией malloc


В-третьих, если ты хочешь читать строки хуйпойми какой длины, то scanf тебе не подойдет и тебе нужно писать велосипед вроде такого:

https://stackoverflow.com/a/16871702
Аноним 20/02/18 Втр 16:24:43 #148 №1142797 
>>1142793
> если ты хочешь читать строки хуйпойми какой длины, то scanf тебе не подойдет
А хули нет? Делаешь массив как long Long и все.
Аноним 20/02/18 Втр 16:40:00 #149 №1142811 
>>1142694
Там нет воды в задачах, они в конце каждой главы перечислены. А дополнительно на любом программистском форуме можешь найти задачи, которые там ставят вопрошающие.
Аноним 20/02/18 Втр 20:29:19 #150 №1143029 
Аноны, я пишу код в sublime, а потом компилирую через gcc. Это по понятиям?
Аноним 20/02/18 Втр 20:30:26 #151 №1143030 
А если у меня есть переменная типа short:
short value = 1;
Если я прибавлю единицу, то есть:
value = value + 1;
То она приведется в тип int?
Аноним 20/02/18 Втр 20:34:17 #152 №1143032 
>>1143029
Да, я вообще tcc компилирую
Аноним 20/02/18 Втр 20:36:33 #153 №1143034 
Как в gcc изменить название компилируемого файла на винде?
Аноним 20/02/18 Втр 20:42:11 #154 №1143037 
>>1143032
Больной ублюдок
Аноним 20/02/18 Втр 20:56:24 #155 №1143047 
>>1143030
У тебя переменная типа short, или макаба съела указатели? Нет, она останется short, но вычисления будут идти так: value = (short) ((int)1 + (int)value) (естественно, в реальности компилятор может и в 16 битах посчитать, если будет уверен, что поведение будет полностью аналогично).

>>1143029
Вполне по понятиям, можешь билд-систему в саблайме настроить на gcc или на мейк-файлы - получишь подсветку ошибок.

>>1143034
> в gcc изменить название компилируемого файла
-o filename.exe
Аноним 20/02/18 Втр 21:44:33 #156 №1143074 
>>1143047
>подсветку ошибок
О, тогда студия вообще не нужна будет.
Аноним 20/02/18 Втр 22:21:38 #157 №1143098 
Посоны, как лучше всего запомнить синтаксис? Где найти задачки и попрактиковатьс?

Да, он сейчас используется?
Аноним 20/02/18 Втр 22:26:14 #158 №1143101 
>>1143032
> Посоны, как лучше всего запомнить синтаксис?
Пиши код. Часто пиши код. И не пренебрегай чтением чужого.

> Где найти задачки и попрактиковатьс?
Несколькими постами выше >>1142811, алсо форчонговские пики рулеточками для кодеров (может быть, кто-нибудь скинет?).

> Да, он сейчас используется?
Нет. Сейчас все принято писать на JS. Даже твоя ОС написана на JS, даже интерпретатор JS написан на JS.
sageАноним 20/02/18 Втр 22:27:11 #159 №1143103 
>>1143101
>>1143098
Промахнулся.
Аноним 20/02/18 Втр 22:29:14 #160 №1143106 
>>1142694
мы тебе скажем, а ты еще их сделаешь, устроишся на работу и будешь создавать конкуренцию
давай как нибудь сам поищи в интернетах
Аноним 20/02/18 Втр 22:42:57 #161 №1143116 
>>1143103
Спасибо
Аноним 20/02/18 Втр 22:44:25 #162 №1143117 
Не могу запомнить массивы и циклы while и do while. Есть инфа подробнее?
Аноним 20/02/18 Втр 23:19:17 #163 №1143134 
>>1143117

Страшно представить что будет на указателях.
Аноним 20/02/18 Втр 23:52:20 #164 №1143164 
>>1143117
Практика, только практика спасёт отца русской демократии. Находишь те же самые примеры и вручную их вводишь. Не тупо копипастинг, а именно ручками и головой.
>>1143134
Проблема только в методике обучения. все думают, что достаточно прочитать какой-нибудь талмуд и уже станут ебашит код с закрытыми глазами, а вот на практику в процессе изучения забивают.
Вот типичный представитель >>1142694 смотрю в внигу, фижу фигу.
Аноним 21/02/18 Срд 07:26:04 #165 №1143256 
>>1143106
А я бы хотел, чтобы люди писали новые полезные библиотеки и прочие проги, ибо у малого количества людей на все ресурсов не хватит.
Аноним 21/02/18 Срд 09:31:15 #166 №1143276 
Кто нибудь мне может объяснить как это
> https://icculus.org/physfs
Гавно работает, какой то поехавший запихал в файл данные, я их никак не могу достать, ничего не помогает, binwalk и ещё кучу мокрописек опробовал
Аноним 21/02/18 Срд 18:03:59 #167 №1143606 
Приведение типов у malloc нужно для того, чтобы самому настраивать арифметику указателей, или что?
Аноним 21/02/18 Срд 18:44:01 #168 №1143645 
>>1143106
>устроишься на работу
>работу
>Cи
Проиграл.
Аноним 21/02/18 Срд 18:52:36 #169 №1143657 
>>1143645
Антоны, все действительно так плохо?
Аноним 21/02/18 Срд 18:59:19 #170 №1143664 
>>1143657
нет
Аноним 21/02/18 Срд 19:08:35 #171 №1143679 
>>1143664
пидора ответ
Аноним 21/02/18 Срд 19:12:39 #172 №1143684 
>>1143679
Пидор пидорка видит из далека.
Аноним 21/02/18 Срд 19:15:52 #173 №1143686 
>>1143684
Пидор пидорка, видящего пидорка издалека
Аноним 21/02/18 Срд 19:18:15 #174 №1143687 
image.jpeg
>>1143686
А ну блядь, гомодрилл вонючий, не проецируй.

я вообще мимо, решил дровишек подкинуть, а ты в свои уже записал
Аноним 21/02/18 Срд 20:17:45 #175 №1143728 
Признавайтесь, указатель это структура такая, пусть и неявная?
Ведь когда мы приводим его к type, мы по сути влияем на его смещение при переходе от type[n] к type[n+1], вот только где нужные для этого перехода данные хранятся?
Аноним 21/02/18 Срд 20:20:49 #176 №1143733 
>>1143728
В большинстве случаев это целое число.
Иногда может быть и структура, гугли fat pointers
Аноним 21/02/18 Срд 20:25:54 #177 №1143740 
>>1143606
У этой функции возвращаемый тип — "void звёздочка", т.е. указатель-на-что-угодно. Его и приводят к тому типу, какой нужен в программе.
Аноним 21/02/18 Срд 20:25:59 #178 №1143741 
>>1143733
Целое число это адрес в памяти.
А как его смещать, если я хочу двигаться по индексам элементов? Разве не нужно ещё число?
Аноним 21/02/18 Срд 20:26:52 #179 №1143744 
photo2018-02-2200-22-58.jpg
В чем прикол этой картинки? Ведь код верный же , не?
Аноним 21/02/18 Срд 20:27:32 #180 №1143745 
>>1143741
На процессорах до 286 было нужно. Теперь не нужно.
Аноним 21/02/18 Срд 20:29:08 #181 №1143747 
>>1143744
Хыхы.
В if не сверяется, а приравнивается к true, а потом возвращается значение, присвоенное этой var.
Т.е. при if у тебя это становится true.
Проиграл, в общем-то.
>>1143745
Magic.

Аноним 21/02/18 Срд 20:30:20 #182 №1143749 
>>1143744
Код-то верный на все сто, но вот...
Аноним 21/02/18 Срд 20:30:36 #183 №1143750 
>>1143747
Да пока разглядывал, уже сам заметил это, но все равно спасибо.
Аноним 21/02/18 Срд 20:33:14 #184 №1143752 
>>1143687
Зачем обижаешь так?
Аноним 21/02/18 Срд 20:33:41 #185 №1143753 
>>1143740
А по идее можно и не менять тип?
Аноним 21/02/18 Срд 20:45:00 #186 №1143762 
Для сишки желателен линукс?
Аноним 21/02/18 Срд 20:46:56 #187 №1143764 
>>1143762
Строго обязателен.
Аноним 21/02/18 Срд 20:48:14 #188 №1143766 
>>1143764
Что делать если нет возможности?
Аноним 21/02/18 Срд 20:49:48 #189 №1143767 
>>1143766
Для начала сочинить ситуацию, когда её реально нет.
Аноним 21/02/18 Срд 21:00:47 #190 №1143772 
>>1143767
Батя отпиздит за даулбут на ноуте.
Аноним 21/02/18 Срд 21:04:36 #191 №1143774 
image.png
>>1143767
Что не нравится ему? Норм код же.
Аноним 21/02/18 Срд 21:05:05 #192 №1143776 
image.png
>>1143774
Забыл приклеить...
Аноним 21/02/18 Срд 21:12:53 #193 №1143782 
>>1143776
Попробуй это.
cpp -v /dev/null -o /dev/null
Должен получить директории, в которых компилятор ищет хедеры.
В одной из этих директорий должен быть stdio.h
Аноним 21/02/18 Срд 21:15:52 #194 №1143786 
>>1143782
>cpp -v /dev/null -o /dev/null
И потом надо будет настроить поиск хедеров ему?
Аноним 21/02/18 Срд 21:16:01 #195 №1143787 
>>1143741
>А как его смещать, если я хочу двигаться по индексам элементов? Разве не нужно ещё число?

Компилятор такой смотрит-смотрит на тип указателя и хуяк - видит какой тип и такой хуяк тут же ассемблер и смещение такой запиливает на нужное количество байт.

https://godbolt.org/g/nCwpoS
Аноним 21/02/18 Срд 21:16:18 #196 №1143788 
>>1143753
Ты не сможешь его разыменовать
Аноним 21/02/18 Срд 21:18:37 #197 №1143789 
Собираюсь вкатываться в программирование. Для себя. Дедлайнов нет, поэтому времени на изучение будет сколько угодно. Что лучше выучить: C или C++? Опытные аноны, есть ли существенная разница?
Аноним 21/02/18 Срд 21:19:39 #198 №1143790 
>>1143762
Нет, особой разницы нет. В macOS будет человеческий интерфейс вокруг, а в Windows человеческие отладчики.

>>1143782
Зачем девнулл, если можно таким же образом cc -v запустить на файле, который компилируется, и посмотреть, где оно ищет и как? Подозреваю, что анон вообще не поставил glibc, но не представляю, как он смог этого добиться.
Аноним 21/02/18 Срд 21:21:13 #199 №1143792 
>>1143786
Вообще, по дефолту в FHS для C-хедеров числится /usr/include
Это если проблема в этом, вообще.
А так, да, если их каким-то чудом нет, то придётся как-то настроить.
>>1143787
Это смещение часть области кода чтоли?
Или просто рядом со статиками валяется в программе под каким-то безымянными переменными?
Аноним 21/02/18 Срд 21:22:29 #200 №1143793 
>>1143790
И ещё двадцатью способами, но я спастил с доков gcc.
Аноним 21/02/18 Срд 21:27:39 #201 №1143800 
>>1143792
> Это смещение часть области кода чтоли?
Это смещение вычисляется в рантайме (индекс умножается на размер типа). Соответственно, "хранится" оно в инструкции (или нескольких).
Аноним 21/02/18 Срд 21:31:55 #202 №1143801 
>>1143800
Я не про то "смещение", о котором ты говоришь:
> индекс умножается на размер типа
Это я вообще бредятину какую-то получу.
Смещение элемента относительно начала массива? Но это свойство элемента массива.
Я про непонятное свойство указателя как такового. Есть где-то инфа, что если ptr++, то на столько единица int'a увеличивается, причём ((char ) ptr)++, это не ((long ) ptr)++, потому что где-то есть неявный параметр, которую эту дельту задаёт при инкременте.

Алсо,
> рантайм
> размер типа
Это тоже не понял. sizeof(type) не рантайм, ЕМНИП.
Аноним 21/02/18 Срд 21:32:56 #203 №1143803 
>>1143801
> на столько единица
> на столько единиц
Аноним 21/02/18 Срд 21:45:07 #204 №1143807 
>>1143801

>Я про непонятное свойство указателя как такового. Есть где-то инфа, что если ptr++, то на столько единица int'a увеличивается, причём ((char ) ptr)++, это не ((long ) ptr)++, потому что где-то есть неявный параметр, которую эту дельту задаёт при инкременте.

Да, называется размер типа на который ссылается указатель. и адресная арифметика учитывает это.

поэтому указатель на чар при добавлении 1 увеличивается на 1 байт, указатель на шорт - 2, на инт - 4, на лонг - 8, на структуру, которая содержит внутри int x,y,z,w - 16.
Аноним 21/02/18 Срд 21:46:53 #205 №1143808 
>>1143807
> учитывает это
Я же говорю, чудеса какие-то.
Это типа не лезь оно тебя сожрёт?
Аноним 21/02/18 Срд 21:54:02 #206 №1143813 
>>1143808
Если в арифметическом выражении встречается указатель, включается арифметика указателей, в которой единица равна размеру типа. Поэтому при прибавлении или вычитании чего-то к указателю предварительно считается офсет, равный n * sizeof(type). Если n переменная, оно считается в рантайме, а sizeof(type) кодируется виде константы в инструкции. Если n константа или константное выражение, то перемножение делается на этапе компиляции и втыкается (в инструкцию опять же) уже готовый офсет.
Аноним 21/02/18 Срд 21:55:58 #207 №1143817 
>>1143813
Вот сейчас уже полностью понятно стало.
Аноним 21/02/18 Срд 21:58:34 #208 №1143821 
>>1143808
>Я же говорю, чудеса какие-то.

Никаких чудес нет, для этого и нужены адресная арифметика и указатель на определенный тип чтобы самому не ебать мозги на сколько байт увеличить адрес чтобы получить следующий элемент.

И по этой же причине компилятор бьет тебя по рукам если ты присваиваешь указатель одного типа к другому без явного приведения типа.
Аноним 21/02/18 Срд 22:00:40 #209 №1143822 
>>1143789
Новичку лучше с Си
Аноним 21/02/18 Срд 22:04:37 #210 №1143830 
Есть ли замена монструозной студии для си?
Аноним 21/02/18 Срд 22:05:25 #211 №1143831 
>>1143821
Если сделаю приведение к типу char для норм побитовошо смещения, то все ПИЗДАТО?
Аноним 21/02/18 Срд 22:06:06 #212 №1143832 
>>1143830
gcc/clang и notepad++
Лучше ещё не придумали.

Аноним 21/02/18 Срд 22:07:29 #213 №1143834 
>>1143830
Любой блокнот с подсветкой синтаксиса, который тебе нравится. Пока ты новичок, и тебе малоинтересны всякие профайлинги и рефакторинги, никакие IDE тебе нинужны. А когда понадобится - сам подберешь нужное.
Аноним 21/02/18 Срд 22:10:22 #214 №1143839 
>>1143832
А что не сублайм?
Аноним 21/02/18 Срд 22:10:31 #215 №1143840 
>>1143831
Побайтового. Да, можно считать в байтах таким образом. Но не на всех платформах можно по получившемуся таким образом указателю прочитать int, например, потому что может требоваться выравнивание (т.е., адрес инта, например, должен быть кратен sizeof(int)).
Аноним 21/02/18 Срд 22:11:05 #216 №1143843 
>>1143839
Первый раз слышу
Аноним 21/02/18 Срд 22:11:59 #217 №1143844 
>>1143843
Толсто.

>>1143839
Саблайм очень неплох, пользуюсь, зависимость есть.
Аноним 21/02/18 Срд 22:12:46 #218 №1143846 
>>1143843
Sublime text. Под пиво норм заходит.
Аноним 21/02/18 Срд 22:14:27 #219 №1143847 
>>1143846
Зашёл на сайт их, мне написали, что для Питуна.
Аноним 21/02/18 Срд 22:14:27 #220 №1143848 
Если я буду размещать переменные в памяти без промежутков, то что мне будет?
Аноним 21/02/18 Срд 22:15:13 #221 №1143849 
>>1143848
Вечные массивы, и сегфолты по праздникам.
Аноним 21/02/18 Срд 22:16:15 #222 №1143850 
>>1143847
Хоть для чего. Подсветка для си есть по дефолта, а подсветка ошибок добавляется парой кликов установкой плагина.
Аноним 21/02/18 Срд 22:18:29 #223 №1143855 
>>1143840
Допустим я таким образом смещаюсь по памяти. Переменная целочисленная занимает несколько байтов же? А при разыменовывании будет возвращаться один байт. Или я не вгоняю?
Аноним 21/02/18 Срд 22:21:51 #224 №1143856 
>>1143855
> Переменная целочисленная занимает несколько байтов же?
Несколько и будут читаться.

Если выравнивание не требуется, то при итерации по 00 01 02 03 04 05 06 07 с инкрементом в один байт будут возвращаться 0x03020100, 0x04030201, 0x05040302 итд. Почему в обратном порядке? Гугли endianess (little endian).
Аноним 21/02/18 Срд 22:26:39 #225 №1143860 
>>114385
>несколько и будут
Прости за тупой вопрос, но как так выходит?
Аноним 21/02/18 Срд 22:27:17 #226 №1143861 
>>1143856
>>1143860
Обосрался
Аноним 21/02/18 Срд 22:29:05 #227 №1143862 
>>1143860
Прости за тупой вопрос, но как может выйти по-другому? Ты процессору дал инструкцию - читать 32-битную переменную (допустим) по такому-то адресу. Ну он и читает. Память - набор ячеек, о хранящихся внутри данных она ничего не знает, как и процессор не знает, зачем ты читаешь свои байты - интерпретирует данные программа.
Аноним 21/02/18 Срд 22:29:22 #228 №1143863 
>>1143790
> Подозреваю, что анон вообще не поставил glibc
Без glibc система не запустится, лол. Это как не поставить ядро.
Аноним 21/02/18 Срд 22:30:40 #229 №1143864 
>>1143863
Я не имел в виду сошки. В дистрибутивах бывает libname и libname-dev. В первом шаред-либа, во втором хедеры и статическая либа (если есть).
Аноним 21/02/18 Срд 22:33:42 #230 №1143866 
>>1143862
Спасибо большое, умный человек.
Аноним 21/02/18 Срд 22:36:37 #231 №1143869 
>>1143863
Есть дистр на асме целиком, так-то
Аноним 21/02/18 Срд 22:38:09 #232 №1143871 
>>1143869
Дистр чего?
Аноним 21/02/18 Срд 22:42:07 #233 №1143877 
Как перестать пиндосам обманывать себя и начать работать с физической, а не виртуальной памятью.
Аноним 21/02/18 Срд 22:42:59 #234 №1143878 
>>1143871
Ядро линукса*
Аноним 21/02/18 Срд 22:44:06 #235 №1143881 
>>1143744
=
==
Опа! И ты уже труп!
Аноним 21/02/18 Срд 22:44:06 #236 №1143882 
>>1143878
Сам его на асме переписывал?
Аноним 21/02/18 Срд 22:44:52 #237 №1143883 
>>1143882
Мой батя переписывал....
Аноним 21/02/18 Срд 22:45:53 #238 №1143885 
>>1143772
Виртуалочка
Аноним 21/02/18 Срд 22:47:58 #239 №1143888 
>>1143885
На флешке держу. Так удобнее
Аноним 21/02/18 Срд 22:58:48 #240 №1143892 
>>1143888
Что удобнее? Дрочить ребут туда-сюда?
Аноним 21/02/18 Срд 23:01:10 #241 №1143896 
>>1143892
Нет ощущения что шинда следит за тобой.
Аноним 21/02/18 Срд 23:05:12 #242 №1143901 
http://www.learn-c.org/

Как вам такой ресурс? Вроде доходчиво объясняют. Не знаю какой стандарт, но думается, что нечто древнее, ибо встречал на просторах how to c in 2017, и там типы данных уже идут 64 разрядах уникода (фейлю скорее всего с названием ибо нуб) uint_64 как то так объявляют тип переменной вобщем.
Аноним 21/02/18 Срд 23:48:40 #243 №1143943 
>>1143901
Судя по количеству уроков - слишком сжато объясняют. Но если нравится, то почему бы и нет?
Аноним 22/02/18 Чтв 00:03:13 #244 №1143950 
>>1143822
Спасибо за ответ.
Аноним 22/02/18 Чтв 00:07:20 #245 №1143957 
Бумпе
Аноним 22/02/18 Чтв 12:06:07 #246 №1144130 
Как работать с физической памятью?
Аноним 22/02/18 Чтв 13:02:56 #247 №1144170 
>>1144130
Через MMU на ассемблере.
Аноним 22/02/18 Чтв 13:35:18 #248 №1144190 
>>1144170
Можно ли так убить брата?
Аноним 22/02/18 Чтв 13:36:42 #249 №1144191 
>>1143892
Быстрее пашет.
Аноним 22/02/18 Чтв 14:16:58 #250 №1144210 
Ребят, как на qt скачать html код с какой нибудь страницы. Использовал qnetworkaccessmanager, но он слизывает просто страницу, а не хтмл ее.
Аноним 22/02/18 Чтв 14:22:17 #251 №1144214 
>>1144130

Ну если тебе достаточно 1 мегабайта, то загружайся в дос, открывай любую борландовскую парашу и хуячь. Если недостаточно - то сорян, 2^32 и 2^64 байт памяти доступны онли в защищенном режиме с виртуальной памятью. Даже ядро OS и драйвера страдают и в нем работают, просто у них физическая память отмаплена другая, вместе с отображаемыми в память устройствами и привелегий больше. И так на большинстве процессоров годом выпуска позднее 1985 года. Ну или микроконтроллер бери, там виртуальной памяти нет.

Единственное что можно сделать - отмапить в таблице страниц адреса физическая -> виртуальная чтобы были 1 к 1.
Аноним 22/02/18 Чтв 15:53:05 #252 №1144254 
Допустим у меня объявлена структура, которая содержит типы int, float и указатель на тип char. Выделяю память для экземпляра такой структуры, затем через strndup() выделяю память для строки, присваивая указателю на char в структуре.
Вопрос: если я сделаю free() для структуры, то память которая была выделена через strndup() тоже освободится?
Аноним 22/02/18 Чтв 16:11:16 #253 №1144261 
>>1144210
статику или динамику?
Аноним 22/02/18 Чтв 16:15:46 #254 №1144263 
>>1144254
да
Аноним 22/02/18 Чтв 16:19:44 #255 №1144266 
>>1144130
в современных ос общего назначения - пишешь драйвер ядра
Аноним 22/02/18 Чтв 16:52:02 #256 №1144295 
Изучаю Си по этому ресурсу: https://metanit.com/cpp/c/
Аноним 22/02/18 Чтв 17:09:18 #257 №1144314 
>>1144295
зачем?
Аноним 22/02/18 Чтв 17:15:33 #258 №1144323 
>>1144314
Хз, там меньше воды чем в книгах обычных.
Аноним 22/02/18 Чтв 17:23:24 #259 №1144331 
>>1144323
зачем си изучаешь?
Аноним 22/02/18 Чтв 17:44:33 #260 №1144346 
>>1144331
Раньше учил плюсы, но внезапно понял, что я использую и люблю в них лишь подмножество Си.
Аноним 22/02/18 Чтв 17:50:34 #261 №1144350 
»1144261
Объяснишь в чем разница? Нужен именно html код страницы, с тегами и тд, чтобы парсить
Аноним 22/02/18 Чтв 17:51:27 #262 №1144351 
>>1144261
Объяснишь в чем разница? Нужен именно html код страницы, с тегами и тд, чтобы парсить
Аноним 22/02/18 Чтв 17:56:02 #263 №1144356 
>>1144346
я спросил: с какой целью изучаешь си?
Аноним 22/02/18 Чтв 17:56:47 #264 №1144357 
>>1144350

волшебник! как ты это сделал?
Аноним 22/02/18 Чтв 17:57:33 #265 №1144359 
>>1144351
>Объяснишь в чем разница?
неа :) не помогаю вкатывальщикам :P
как нибудь сам выкарабкивайся
Аноним 22/02/18 Чтв 18:03:09 #266 №1144363 
>>1144356
Хуй знает, просто делать нехуй.
Аноним 22/02/18 Чтв 18:08:22 #267 №1144365 
>>1144363
дон хуан всегда подсмеивался над кастаньедой от того что тот знал кучу ненужной для выжывания информации
Аноним 22/02/18 Чтв 18:09:02 #268 №1144366 
>>1144365

бля
Аноним 22/02/18 Чтв 18:10:50 #269 №1144367 
>>1144365
То есть ты хочешь сказать, то что работы не си не найти и мне придется скоро укатиться в веб работать макакой, копипастя примеры из доков?
То есть ты хочешь сказать, что сейчас я незачем трачу все свое время?
То есть ты хочешь сказать, что меня ничего не ждет и если я найду работу, то точно не на ламповом си?
Аноним 22/02/18 Чтв 18:11:16 #270 №1144368 
>>1144366
Кастаньеты! Эспаньола!
Аноним 22/02/18 Чтв 19:14:34 #271 №1144394 
>>1144367
Да, все так и будет.
Аноним 22/02/18 Чтв 19:27:29 #272 №1144397 
>>1144394
А на плюсах?
Аноним 22/02/18 Чтв 19:29:40 #273 №1144398 
>>1144394
Аноны, он меня обижает!
Аноним 22/02/18 Чтв 19:33:44 #274 №1144401 
>>1144397
На плюсах ситуация чуть лучше, но в долгосрочной перспективе будет то же самое.
Аноним 22/02/18 Чтв 19:36:11 #275 №1144404 
>>1144401
Почему? Разве байтоебы не нужны? Гейдев не нужен?
Аноним 22/02/18 Чтв 19:41:41 #276 №1144406 
>>1144404
>Разве байтоебы не нужны?
Особо не нужны. В регионах и мухосранях вакансия байтоеба - большая редкость, причем все ищут сениора, а джуны байтоебы уж точно никому не нужны.
>Гейдев не нужен?
Гейдев в России и СНГ - написание игр под андроид типа три в ряд с рекламой и донатом. Если хочешь в гейдев - учи unity и c#.
Аноним 22/02/18 Чтв 20:08:42 #277 №1144417 
>>1144254
Нет. free() структуры освободит только память, выделенную для структуры. А раз внутри strndup отдельный маллок, то на этот маллок тебе тоже нужен free().

Аноним 22/02/18 Чтв 20:09:24 #278 №1144418 
>>1144404
бля, зайди на hh, в поиске резюме набери "программист c++" и охуей от контингента
просто сделай это
ты тоже хочешь таким же стать к тридцати?
Аноним 22/02/18 Чтв 20:10:32 #279 №1144419 
>>1144417
зачем ты отвечает заведомому вкатывальщику?
Аноним 22/02/18 Чтв 20:12:54 #280 №1144420 
>>1144419
Затем, что мне не сложно. Алсо, если молчать или траллить нубов, тред умрет.
Аноним 22/02/18 Чтв 20:33:56 #281 №1144440 
>>1144419
Приведи пример достойного вопроса от "невкатывальщика".
Аноним 22/02/18 Чтв 20:40:00 #282 №1144444 
>>1144440
volatile struct vs. офсеты и REG_READ/REG_WRITE для регистров микроконтроллера. Алсо, битфилды vs. дефайны и сдвиги для них же. Вроде бы и особых знаний для понимания проблемы не требуется, но и золотой середины нет, у всех решений свои недостатки.
1144417
Аноним 22/02/18 Чтв 20:41:56 #283 №1144446 
>>1144401
>>1144404
В цпп треде на днях читал пост чела со стажем в с++, он в веб укатил из-за отсутствия перспектив
Аноним 22/02/18 Чтв 20:42:39 #284 №1144447 
>>1144444
Пентипл?
Аноним 22/02/18 Чтв 20:45:10 #285 №1144450 
>>1144446
Это я.
Аноним 22/02/18 Чтв 21:15:17 #286 №1144466 
>>1144420
>тред умрет
то что мертво, умереть не может
Аноним 22/02/18 Чтв 21:18:38 #287 №1144468 
>>1144466
Чмо мелкобуквенное, ебало свое завали и сиди молча.
Аноним 22/02/18 Чтв 22:05:45 #288 №1144491 
1327426456094.jpg
>>1144468
Аноним 23/02/18 Птн 10:29:20 #289 №1144674 
Подскажите, а есть какая-то книга рецептов и приемов для создания больших проектов на си?
Аноним 23/02/18 Птн 18:13:56 #290 №1144878 
Сап, аноны. Хочу немного оптимизировать компиляцию с objcopy, но objcopy -O ihex *.elf file.hex не срабатывает, и мне приходится ручками вводить objcopy -O ihex file.elf file.hex

Пробовал прописать objcopy --wildcard -O ihex file.elf file.hex, но это тоже не сработало.
Может кто-то объяснить мне как в objcopy правильно использовать wildcard?
Аноним 23/02/18 Птн 18:22:54 #291 №1144882 
Кто-нибудь понимает в asm extended? Как мне вытащить значения из стека в массив?
https://pastebin.com/LA6HBKYH
Аноним 23/02/18 Птн 19:10:35 #292 №1144916 
>>1144878
Лол. Ты бы подтянул матчасть по командной строке сначала. wildcard-ы раскрываются shell-ом, если есть такие файлы.
Опция --wildcard у objcopy — это про использование wildcard-ов для имён символов в файле.
Аноним 23/02/18 Птн 19:11:45 #293 №1144919 
image.png
>>1144674
>приемов для создания больших проектов на си?
Вот главный приём.
Аноним 23/02/18 Птн 20:22:58 #294 №1144949 
>>1144882
Из какого стека?
Того, в котором выполняется твоя функция?
Тогда тупо объяви в ней локальный не статический массив, и выйди за его границы при чтении.

мимо-школьник-кун
Аноним 23/02/18 Птн 20:42:47 #295 №1144956 
>>1144674
> больших проектов на си?
нужно побольше обмазываться макросами чтобы делать костыли для atd и кодогенерации
и еще как можно больше структурок и указателей на функции чтобы делать костыли эмулирующие ооп - интерфейсы, полиморфизм
и прочие сладкие вещи
Аноним 23/02/18 Птн 20:47:15 #296 №1144959 
>>1144956
Я бы еще добавил больше генераторов кода, особенно там, где надо синхронизировать бойлерплейты между собой.
Аноним 23/02/18 Птн 20:47:49 #297 №1144961 
>>1144674
Ебля в жопу в попытке сымитировать ООП и прочие инструменты для разработки больших проектов.
Аноним 23/02/18 Птн 22:01:26 #298 №1144986 
>>1144916
Ну и как мне тогда конвертировать любой файл с расширением .elf в .hex?
sageАноним 23/02/18 Птн 22:33:08 #299 №1144995 
>>1144986
Мэйкфайл напиши и правило для .elf.hex.
Аноним 23/02/18 Птн 22:56:05 #300 №1145003 
>>1144961
>в попытке сымитировать ООП
Не пробовал устроится стоматологом-проктологом?
Что бы сымитировать на сишечке(именно сымитировать, а не реализовать) ООП надо быть тем ещё проктологом.
>>1144919
Это не приём, а уже объект.
>>1144882
>Как мне вытащить значения из стека в массив?
Чьего стека? Где конкретика?
Аноним 23/02/18 Птн 23:53:12 #301 №1145014 
>>1145003
>сымитировать на сишечке(именно сымитировать, а не реализовать) ООП надо быть тем ещё проктологом
да наверное в каждом крупном проекте ваяют полиморфизм на структурках и указателях на функции, теми же способами делают интерфейсы, теми же способами делают наследование интерфейсов
ну ты че
Аноним 24/02/18 Суб 00:19:47 #302 №1145023 
>>1144986
for f in *.elf ; do objcopy -O ihex "$f" "${f%.elf}.hex" ; done
Аноним 24/02/18 Суб 00:36:46 #303 №1145029 
>>1145023
Спасибо
Аноним 24/02/18 Суб 02:55:02 #304 №1145068 
>>1145003
А из моего банального примера это не понятно какого стека? Программного стека указатель на вершину которого лежит в регистре процессора.
Аноним 24/02/18 Суб 05:46:17 #305 №1145093 
>>1145068
Животное, ты слышало, что у процессора может быть больше одного стека и больше одного регистра, с указателем стека?
Аноним 24/02/18 Суб 06:13:41 #306 №1145097 
>>1145093
Забей школьник, это не для тебя, ты слишком тупой и несёшь хуйню, тем более что вопрос уже решён.
Аноним 24/02/18 Суб 08:18:21 #307 №1145111 
Оракловский компилятор нормальная тема?
У меня стоит студия 15( но там по-моему нельзя в Си, перешёл бы на 17, но у меня не ставится из-за какого-то говна)
есть ещё нетбинс
Аноним 24/02/18 Суб 10:53:53 #308 №1145143 
#define TEST(x) \
#ifdef ERROR \
(x) \
#endif

Пример выше не компиляется. Как сделать так, чтобы компилялось? Я хочу проверку в макрос запихнуть.
Аноним 24/02/18 Суб 12:35:49 #309 №1145172 
>>1145143
Хочешь, чтобы макрос раскрывался в макрос? А второй макрос кто будет раскрывать? Пушкин?
Аноним 24/02/18 Суб 13:53:50 #310 №1145193 
>>1145172
Чет гугол ничего не говорит, про такую оптимизацию в компиляторе. gcc -oPushkin — гуглу неизвестно :-/
Аноним 24/02/18 Суб 16:10:05 #311 №1145255 
кр
Аноним 24/02/18 Суб 18:14:42 #312 №1145334 
>>1138954 (OP)
Есть ли хорошие гайды или книги про stdatomic? Чтобы пошагово от простых примеров к сложным, а то для pthread всего навалом, а про stdatomic описание в две строчки или код на 2000 строк.
Аноним 24/02/18 Суб 19:02:49 #313 №1145387 
>>1145143
Это так не работает. Вытащи ифдеф наружу и сделай две версии TEST внутри него. Алсо, есть вариант условно дефайнить ERROR_FLAG в 1 или 0 соответственно, и макросами матрчить TEST и ERROR_FLAG c TEST_0 и TEST_1 соответственно. Хотя это не твой случай, в твоем случае это только увеличит количество телодвижений. А вот если макросов, подобных TEST, будет сильно дохуя, можно задуматься.

>>1145111
В студии в Си можно, вы заебали. Сохраняй файл как .c, а не .cpp, компилируй.

>>1145334
Стандарта достаточно. Еще где-то с одной из последних cppcon было видео, где поясняли.
Аноним 24/02/18 Суб 19:11:32 #314 №1145392 
>>1145334
https://herbsutter.com/2013/02/11/atomic-weapons-the-c-memory-model-and-modern-hardware/ видео
Только аккуратно, про memory fences он врёт (см. http://preshing.com/20131125/acquire-and-release-fences-dont-work-the-way-youd-expect/)
Ну и см. блог http://preshing.com/archives/
http://preshing.com/20120612/an-introduction-to-lock-free-programming/
http://preshing.com/20120625/memory-ordering-at-compile-time/
http://preshing.com/20120710/memory-barriers-are-like-source-control-operations/
http://preshing.com/20120913/acquire-and-release-semantics/
http://preshing.com/20120930/weak-vs-strong-memory-models/
http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu/
http://preshing.com/20130618/atomic-vs-non-atomic-operations/
http://preshing.com/20130702/the-happens-before-relation/
http://preshing.com/20130823/the-synchronizes-with-relation/
http://preshing.com/20130922/acquire-and-release-fences/
comments powered by Disqus

Отзывы и предложения