
Alex Фэils?︙
17.04.2016
21:33:31
Это Си-строки)

Ned Ogl
17.04.2016
21:33:40
стоп

Alex Фэils?︙
17.04.2016
21:33:42
вот попробуй въехать в них

Ned Ogl
17.04.2016
21:33:48
а че я куйню наковал?

Google

Ned Ogl
17.04.2016
21:34:05
надо же слепить весь вход в одну строку и выдавать её по кускам

Alex Фэils?︙
17.04.2016
21:34:09
вооотт!!!!

Ned Ogl
17.04.2016
21:34:10
и аккуратно ообработать переносы

Alex Фэils?︙
17.04.2016
21:34:15
я об этом в начале и говорил)

Ned Ogl
17.04.2016
21:34:23
ебись оно колесом, короч

Alex Фэils?︙
17.04.2016
21:36:49
могу попробовать написать свой вариант сий чудной проги
чисто для примера безопасной работы с их строками

Ned Ogl
17.04.2016
21:37:11

Alex Фэils?︙
17.04.2016
21:37:15
ага
У тебя, Кстати, есть ограничитель длины

Ned Ogl
17.04.2016
21:38:06
?
строки не длиннее 40 символов
соответственно облако не шире 44х символов

Google

Ned Ogl
17.04.2016
21:46:43
@AlexFails, ты собрался тоже написать корову?

Alex Фэils?︙
17.04.2016
21:46:54
да, ща в блокноте пишу
вернее, я напишу только логику без пузыря
блядь, у меня ж была где-то поебень, рисующая в буфер текст
ну лан, хер с ним

Ned Ogl
17.04.2016
21:51:33
почему если я сделал динамическую строку, я не могу сделать string = "";
?
и вынужден string[0]='\0';
это нормально?

Alex Фэils?︙
17.04.2016
21:54:45
Потому что в синтаксисе языка знак '=' при определении переменной и при присваивании играет разную роль
Так, а тебе обязателно сохранять строчку?

Ned Ogl
17.04.2016
21:57:53
что значит сохранять?
ты имеешь ввиду выводить по одному слову?

Alex Фэils?︙
17.04.2016
21:58:07
То, что можно сразу вывести аргументы

Ned Ogl
17.04.2016
21:58:22
это имеет смысл, но мы тогда не сможем рисовать динамическое облако
я уже долго об этом думал

Alex Фэils?︙
17.04.2016
21:58:47
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argc == 1) {
printf("USAGE: cowsay <arg1> <arg2> ... <argN>");
return 1;
}
size_t chars = 0;
size_t i;
for (i = 1; i < argc; i++) {
chars += printf("%.*s", chars, argv[i]);
putchar (chars == 40 ? '\n' : ' ');
chars %= 40;
}
return 0;
}
Хотя тут ошибочка есть
ща поправлю, минутку

Ned Ogl
17.04.2016
22:00:00
Не, он должен переносить только те слова, которые длиннее 40

Google

Alex Фэils?︙
17.04.2016
22:01:08
.40s позволяет нам выводить ДО 40 символов
хотя ща я гляну в фм

Ned Ogl
17.04.2016
22:02:11
а объясни мне, как нубу, что такое size_t?
и чему он равен по размеру?

Alex Фэils?︙
17.04.2016
22:02:44
это тип, который может содержать максимально возможный размер на этой архитектуре
используется для смещений в массивах, к примеру

Ned Ogl
17.04.2016
22:03:02
кхм, а вот о таком я не знал

Alex Фэils?︙
17.04.2016
22:03:12
поэтому strlen его возвращает
Нед, проверь тот сэмпл, что я ща набросал)
скорее всего, он чутка косячит)
но общая идея выглядит примерно так
там еще надо добавить херь для пузырьков

Alex Фэils?︙
17.04.2016
22:04:19
и саму корову
блин, я опять ошибся
надо не .40s
а .*s
ща поправлю

Ned Ogl
17.04.2016
22:05:26
ага, и после формата в printf() выведи то, что пытаешься вывести)
полагаю, argv[i]?

Alex Фэils?︙
17.04.2016
22:05:42
да

Google

Alex Фэils?︙
17.04.2016
22:06:26
Вот так вот и рождаются юнионы вместо страктов, а потом альтернативно одарённые люди величают даунами)

Ned Ogl
17.04.2016
22:08:10
оо, прикинь
она ничего не выводит)
совсем
потому что ты лах
надо chars += printf("%.*s", 40 - chars, argv[i]);
ведь изначально-то chars = 0

Admin
ERROR: S client not available

Alex Фэils?︙
17.04.2016
22:11:06
верно
я рад, что ты нашел _специально оставленную_ ошибку?

Ned Ogl
17.04.2016
22:13:14
но она зарезает слова

Alex Фэils?︙
17.04.2016
22:15:06
ага, ок. Нам надо если chars > 40, то i--

Ned Ogl
17.04.2016
22:16:03
не, нам так не надо
если i--, она введет кусок слова и слово целиком

Alex Фэils?︙
17.04.2016
22:16:35
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argc == 1) {
printf("USAGE: cowsay <arg1> <arg2> ... <argN>");
return 1;
}
size_t chars = 0;
size_t i;
for (i = 1; i < argc; i++) {
chars += printf("%.*s", 40 - (chars % 40), argv[i] + chars);
putchar (chars == 40 ? '\n' : ' ');
if(chars >= 40) {
chars -= 40;
i--;
}
}
return 0;
}

Ned Ogl
17.04.2016
22:23:06
неплохо, но тот самый баг, о котором я говорил, присутствует
я вот пока хз, как посчитать итоговое кол-во строк

Alex Фэils?︙
17.04.2016
22:23:19
бля, ща
Поправил
он по смещению будет печатать

Google

Alex Фэils?︙
17.04.2016
22:24:13
вообще, лан, я пойду спать)

Ned Ogl
17.04.2016
22:24:21
да, спасиб, бро)

Alex Фэils?︙
17.04.2016
22:24:27
Доброй ночи)
если придумаешь, как улучшить эту идею, или есть какие-нибудь вопросы - пиши)

Roman
17.04.2016
22:51:07
Есть кто WinApi знает? Какой msg(UINT) должно перехватить окно коллбэком, чтобы узнать о изменении файла в следящейся директории, или о изменении Journal Records?

Alex Фэils?︙
17.04.2016
22:51:11
да
тут не msg надо
ща скажу, мин.

Roman
17.04.2016
22:52:56
FILE_NOTIFY_INFORMATION читать? Проверяя ReadDirectoryChanges?

Alex Фэils?︙
17.04.2016
22:54:16
https://habrahabr.ru/post/164775/
ага
оно самое
(статейку искал по примерам)

Roman
17.04.2016
22:55:22
Спс
Так и думал, прос цикл мне не нравится, с перехватом сообщений посимпотичней было бы

Alex Фэils?︙
17.04.2016
22:57:31
вроде как-то можно через WaitFor....

Roman
17.04.2016
22:59:39
Нет, я тогда просто привяжу к циклу оконного приложения. Всем спасибо, я сделал

Alex Фэils?︙
17.04.2016
23:01:44
я делал еще так: при переключении вкладки я проверял дату изменения файла (согласен, кривовато, может возникнуть херь, что она не изменилась, а файл другой - см АкелПад)
(Тогда не знал об этом апи)