Sergey
Разыменовываешь и получаешь символ
Sergey
типа того
Sergey
ну это ж учебный пример
🦥Alex Fails
Ага
Sergey
Похер, что неоч и небезопасно
🦥Alex Fails
Нее
🦥Alex Fails
Вот на это никогда нн должно быть похер
🦥Alex Fails
Даже в учебных примерах
🦥Alex Fails
Циклом пройтись?
ща покажу решение
🦥Alex Fails
/// тут безопаснее const size_t N = 100; char str1[N] = "bla lablabka10224289044", str2[N] = {0}; //делаем одинакового размера, чтоб не вылезти за пределы массива size_t i1 = 0; // индекс записи char *ptr = str1; char *ptr_end = str1 + 100; while(ptr < ptr_end && *ptr) { // пока не ройдем по всей строке, мли пока не кончатся символы ptr = strpbrk(ptr, "0123456789"); // ищем цифры if (!ptr) { break; } str2[i1++] = *ptr; // пишем цифру (символ цифры!) ptr++; }
Anonymous
Ребята, с доступом к IOS с PC никто не работал?
Anonymous
Доступом к файловой системе
🦥Alex Fails
есть syncios
🦥Alex Fails
она чето из тунца юзает
🦥Alex Fails
и можно в ифон писать инфу
Anonymous
мне библиотеку бы)
Anonymous
goto - зло?
Андрей
goto - зло?
Чаще всего да.
Андрей
Проблема в том, что люди не умеют его использовать.
Anonymous
Но злом оно является в руках ребенка?
Anonymous
использую goto регулярно
Anonymous
на работе
Андрей
Кроме как выхода из вложенных циклов редко когда нужен.
Anonymous
нужен для обработки ошибок
Anonymous
регулярно и часто
Андрей
нужен для обработки ошибок
Ого, а можешь пример дать?
🦥Alex Fails
очень просто
🦥Alex Fails
ща покажу
Anonymous
goto - зло?
Абсолютное.
Anonymous
Андрей
Абсолютное.
Как из вложенных циклов выходить?
Anonymous
Тратить ресурсы лишние, ЗАТО БЕЗ ГОТО!!
Андрей
Ага, goto - зло, поэтому будем jmp использовать)
Anonymous
http://lxr.free-electrons.com/source/mm/msync.c#L40
Андрей
Блин, if без скобок...
🦥Alex Fails
void some_fn() { void *h1, *h2, *h3; void* h1 = init_huita1(); if(!h1) return -1; h2 = init_huita2(); if(!h2) goto clean_h1; h3 = init_huita3(); if(!h3) goto clean_h2; /* еще сотни тыщ такой хуиты */ clean_h2: clean_huita(h2); clean_h1: clean_huidta(h1); }
🦥Alex Fails
Как из вложенных циклов выходить?
for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { if(i==95 && j==42) goto outer; } } outer: return 0;
Anonymous
Тратить ресурсы лишние, ЗАТО БЕЗ ГОТО!!
За готу надо сразу по руками рельсой бить, чтобы не повадно было использовать это.
Андрей
А если юзать ретурн?
А если там не ретурн должен быть?
🦥Alex Fails
А если юзать ретурн?
можно и ретурн сразу
🦥Alex Fails
Я так и делаю
🦥Alex Fails
Если в функции только один раз встречаются вложенyые wиклы
Anonymous
Дурачок?
Код с кучей готу очень сложно поддерживать.
Андрей
Код с кучей готу очень сложно поддерживать.
А кто тебе сказал, что их должно быть много?
🦥Alex Fails
ну, goto - это опасная вещь
🦥Alex Fails
ей нельзя злоупотреблять
🦥Alex Fails
так же, как и другой хуйней
Андрей
Не должно быть ни одного.
Ок, у меня цикл 3 вложенности. Как из него выйти?
Anonymous
Код с готу не пройдёт code review в моей организации вообще, а автор такого говнокода получит рельсой по рукам.
Андрей
Удобно, чо.
🦥Alex Fails
с языка снял
Anonymous
Ок, у меня цикл 3 вложенности. Как из него выйти?
Ток не смейтесь))) А если юзайть break и перед этим функцию вызвать?
🦥Alex Fails
Ток не смейтесь))) А если юзайть break и перед этим функцию вызвать?
то сначала вызовется функция, а потом ты выйдешь из одной вложенности цикла
Anonymous
А когда юзаешь гото, разве цикл не продолжает существовать?
🦥Alex Fails
ты прыгаешь в другой участок кода
🦥Alex Fails
если копнуть глубже, то у нас есть команды, которые в цикле крутятся
🦥Alex Fails
а ты выпрыгиваешь из этой петли
Anonymous
но ведь одну петлю мы распутаем, а вторая существует, в то время как с гото два существуют
Anonymous
еще бы уметь на плюсах кодить :D
Андрей
Ты не можешь написать цикл?
Anonymous
for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { if(i==95 && j==42) goto outer; } } outer: return 0; 0 for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { if(i==95 && j==42) // do something break; } }
Anonymous
как-то так
arisudesu
чет хуйня
arisudesu
используйте отдельный метод
arisudesu
с возвратом
arisudesu
из него