после того как к прошлому уроку я писал функцию вставляющую в массив значение введенное с консоли по индексу в любое место массива, этот урок прям легко пошел почему-то)))
Сергей, у Вас самые качественные ролики по программированию, спасибо большое, если бы не Вы, то я, скорее всего просто забросил программирование из-за многих недопониманий)
Спасибо большое за уроки! Все объясняется очень доступно даже для самого начинающего. Из всего многообразия информации - у Вас получается доносить её максимально последовательно и полно.
Хорошие уроки, как раз то что нужно начинающему программисту. Если бы еще по каждому уроку были домашние задания с ответами (не видео, а текст): посмотрел урок, сделал домашку по уроку на закрепление материала.... А так долго приходится искать примеры программ на закрепление пройденного материала. БОЛЬШОЕ СПАСИБО ЗА ВАШИ ВИДЕО УРОКИ!!!!
Для тех кто обучается используя Dev-C++: что бы вызвать функцию strlen() нужно подключить заголовочный файл строчкой #include в самом начале программы.
К стати, а ведь strlen(условная переменная char) можно использовать вместо функции rand() по сути. Рандомно будет выводится число, покуда функция не упрется в терминатор. Еще раз спасибо за уроки, Сергей.
17:00 "...иногда полезно делать такие вещи и смотреть что получится..." Я, который еще на середине видео запустил в цикле for на 999 итераций вывод половины оперативки:🙉 Жаль, вывело немного, но один раз мне даже выскочило исключение и сказало что я залез в недоступную часть памяти
@@ikakSlohno класс стринг это буквально один из STL-вских контейнеров, и это классно, изучил например «map» контейнер и почти со всеми более менее можешь обращаться (а вот у multi-контейнеров мб свои ньансы). Сегодня тупил над shrink_to_fit() методом у string, но озарило, я инициализировал по размеру нулями так: string st(64, '\0'); Туда например добавлялось всего 3 символа, остальные оставались нули, shrink_to_fit их не обрезал. А просто надо было размер не так инициализировать а через метод «reserve»... Так то там похоже для std::string терминирующий ноль не особо нужен
Так. По названию можно понять, что строка, это массив символов. Вот мой код, до начала просмотра видео: void print(char *arr[]) { for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { cout > str; но cin.getline может и с пробелами вывести print(&str); delete[] str; return 0; }
Всё же правильно, символов пять 0, 1, 2, 3, 4 это и есть пять символов, вот и выводит пять. То есть в нулевой элемент массива записан какой-то символ, это уже считается 1 символ, ну и т.д. В общем похоже strlen просто выводит на человеческом языке, а не машинном P.S. Это как и с указанием размера массива... Указываешь что некий массив будет на 3 элемента, обращаешься к ним уже с нуля "0, 1, 2"
интересно, что cout по имени массива string вьіводит массив как строку. Если так обратиться к массиву интов, то вьіведет адрес, а если разьіменовать, то только значение, лежащее под 0м индексом
Здравствуйте дорогой учитель Ваше видеоуроки мне очень нравится, вы все детально объясняете!!! Можете подсказать Я программирую на среде DevC++ и у меня выводит ошибка с strlen Почему ? Я все хорошо проверил но ошибка Может это из-за среды devc++ ?
не знаю говорил ли кто то об этом. автор упустил одну важную вещь, если strlen не учитывает ноль терминатор, это не значит что его нет в массиве, таким образом при работе с таким массивом и использованием sizeof может быть ошибка так как \0 занимает столько же места в массиве сколько и любой другой символ(1 байт).
Спасибо. А если строкой является данные записанные в переменную из, например COM-порта? В составе пакета есть несколько полезных цифр на определенном месте и их надо записать в виде числа. Как это сделать?
Интересно почему когда при вводе массива char ввести больше одного пробела , то программа перестает нормально работать. И вообще чтобы ввести нормальную строчку из нескольких слов разделенных пробелами необходимо создать несколько массивов, которые автоматически заканчиваются когда вводишь пробел и начинается ввод нового. Почему в массив не записываются пробелы? Для ввода массива использовал cin.
cin действует, как scanf в языке си, для этой функции символ пробела - это терминатор ввода данных в строку, все, что после пробела и до энтера вводится - в молоко. Так уж создали. Для обхода этого ограничения в си есть 2 функции - gets и fgets (fgets предпочтительнее, так как защищает от выстрела в ногу, не дает вводу выйти за пределы строки), в с++ - это getline(cin, имя строки). Есть еще cin.getline (имя строки, длина строки). При помощи этих функций можно вводить пробелы в строку и ввод терминируется исключительно энтером. Удачи в изучении сего прекрасного языка программирования :)
Здравствуйте помогите пожалуйста . Имеется массив char . В них значения меняются . Например. code[0] 0x01 code[1] 0xfe code[2] 0x02 code[3] 0xfd Надо переписать в переменную long int kod. Чтобы в переменную kod записалась так . 0x01fe02fd Как это сделать , помогите пожалуйста . Спасибо . IDE У меня CVAVR .
у меня вопрос, каким образом можно создать строку, а уже потом инициализировать ее, как мы это делали с переменными. например. int a; a = 15; не так char string[ ]; string = "Hello World"; и не так не получается char string[]; string[] = "Hello World";
обязательно посмотри уроки #25 и #26 т.к. ты изначально неправильно объявляешь массив: char string[ ]; если ты хочешь сперва объявить массив, а инициализировать позже - тебе при объявлении нужно обязательно указать количество элементов. либо использовать динамический массив, а не статический,)
Инициализировать неизвестную строку (массив) сложно - компилятор не знает сколько памяти под нее выделять. А с переменными все просто - независимо от значения ячейка занимает известное число байт.
Массив из слов разной длины собирается через эти терминаторы. Плюс : особенность более низкоуровневых языков - даже очевидное на первый взгляд нужно прописывать руками.
Самое интересное, что в Linux если детерминирующий ноль не указать, то он все равно не покажет лишних символов. Интересно, с чем это связано? не ужели это настолько хорошее ядро по сравнению с тупым NT?
Я так понял,что в последний версии студии,символ " \0" пишется автоматически,достаточно оставить пустое место в конце массива,а при написании " \0",он, наоборот, исчезает,и появляется мусор.
Ирония: Автор допустил нас к "hello world"у только на 60ю лекцию. :D
после того как к прошлому уроку я писал функцию вставляющую в массив значение введенное с консоли по индексу в любое место массива, этот урок прям легко пошел почему-то)))
Не расслабляйся, я заглядывал вперед,... там охренеть! ))
@@Alex-hs8xj та же фигня, на удивление функции эти я сочинил довольно быстро.
Дякую.Ви дуже добре пояснюєте.Хороші уроки)
)
Дякую, це найкращий курс з С++ на youtube!!!
Будь ласка!
@@vylvhhh ну, как основа, лучшие
Сергей, у Вас самые качественные ролики по программированию, спасибо большое, если бы не Вы, то я, скорее всего просто забросил программирование из-за многих недопониманий)
Просмотрел 18 минут на одном дыхании, автор ты победил!
Спасибо большое за уроки! Все объясняется очень доступно даже для самого начинающего. Из всего многообразия информации - у Вас получается доносить её максимально последовательно и полно.
Не могли бы Вы сделать уроки по структурам и по файлам, а так же по работе с ними?
Хорошие уроки, как раз то что нужно начинающему программисту. Если бы еще по каждому уроку были домашние задания с ответами (не видео, а текст): посмотрел урок, сделал домашку по уроку на закрепление материала.... А так долго приходится искать примеры программ на закрепление пройденного материала. БОЛЬШОЕ СПАСИБО ЗА ВАШИ ВИДЕО УРОКИ!!!!
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
Для тех кто обучается используя Dev-C++: что бы вызвать функцию strlen() нужно подключить заголовочный файл строчкой #include в самом начале программы.
что бы, исправь пж молодой, так же красивее
спасибо
Спасибо
Проорал с нуля на 6:48
+
....Это не тоже самое что и ноль, вот такой....
xDDDD
#cтроки #SimpleCode #урокипрограммирования
Предыдущий урок я буду носить с собой на флешке :D
+
Сергей, искренне благодарен Вам за ваше старание
@@Empty_line что именно?
Сергей, спасибо большое за работу! Береги себя!
Умаляю вас можете помочь мне? у меня один вопрос!
привет из 2023! Спасибо большое за уроки!
2024
2025
2026
2027
Рисуешь как Бог!)
Мой лайк 5000-й! Спасибо за урок!
Спасибо за ваши уроки,Сергей
Спасибо, Автор, ты лучший!
Огромное спасибо за ваш труд! Уроки очень понятные и информативные)
Спасибо за ваши уроки)
К стати, а ведь strlen(условная переменная char) можно использовать вместо функции rand() по сути. Рандомно будет выводится число, покуда функция не упрется в терминатор.
Еще раз спасибо за уроки, Сергей.
Смысл залезать в чужую область памяти?
лучшие уроки у вас
Сергей, спасибо огромное!
Спасибо !
Пожалуйста!
17:00 "...иногда полезно делать такие вещи и смотреть что получится..."
Я, который еще на середине видео запустил в цикле for на 999 итераций вывод половины оперативки:🙉
Жаль, вывело немного, но один раз мне даже выскочило исключение и сказало что я залез в недоступную часть памяти
Ловушки Джокера делаешь
Спасибо, Сергей. Очень интересно!
Просто лучший!
Проще посмотреть твои видео, чем сидеть на парах
У std::string так же можно обращаться к элементам строки
string word = "Hello";
cout
Потому что std::string это обертка под char[] и из-за этого он работает так же как массив
По своей сути любая строка больше 1 символа будет массивно не зависимо от языка
@@ikakSlohno класс стринг это буквально один из STL-вских контейнеров, и это классно, изучил например «map» контейнер и почти со всеми более менее можешь обращаться (а вот у multi-контейнеров мб свои ньансы).
Сегодня тупил над shrink_to_fit() методом у string, но озарило, я инициализировал по размеру нулями так:
string st(64, '\0');
Туда например добавлялось всего 3 символа, остальные оставались нули, shrink_to_fit их не обрезал.
А просто надо было размер не так инициализировать а через метод «reserve»...
Так то там похоже для std::string терминирующий ноль не особо нужен
Ролик класс, спасибо!
Канкотенация строк, о ужас, заготовил на всякий случай кило антидипресантов... А в общем, как обычно, спасибо большое Сергей!
Сергей, не забывай, плиз, буковки побольше делать, совсем ни хр.. не видно, прям на самой велосипедной теме!.. ;/
О, да, чуть глаза не сломал!
Так. По названию можно понять, что строка, это массив символов. Вот мой код, до начала просмотра видео:
void print(char *arr[]) {
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
cout > str; но cin.getline может и с пробелами вывести
print(&str);
delete[] str;
return 0;
}
15:04 - А что случилось с первыми тремя символами? Понятно, что каким-то образом изменилось значение в соответствующих байтах памяти, но каким именно?
есть такие символы, которые трансформируют другие символы, скорее всего такие символы и попались.
"Примерно точно так-же само" - как по мне лучше и не скажешь)
Умаляю вас можете помочь мне? у меня один вопрос!
Хороший урок, жаль только шрифт мелковат)
Оставлю это здесь
В информатике принято нуль перечеркивать обратным слэшем
ага. для того чтобы отличать от буквы "О". Правда только прямым слешем, не обратным
Очень интересно узнать о интерфейсе инструкций с++. Потому что я начал впринципе с него. Не считая бейсика, делфи html и java в техникуме.
Спасибо
на strlen ругает. если добавить #include , то все гуд (но у вас cstring нет, и все чудненько). может компилятор VS хитер?)
спасибо помогло )
ох, спасибо, два часа мучался, думая как это сделать.
Благодарю!
Просто Спасибо )
Почему никто не объяснит как работать с библиотекой стринг...
спасибо!
Лайк за "карячки"
И краказябры
16:55 Строка это когда есть в конце /0, если его убрать то это просто массив.
2:54 начало
"АСКИ" - это таблица ASCII?
Геениий!
Здравствуйте. А почему функция при подсчет символов, выводит число пять? Символов пять, но массив же считается с нуля. Значит 0, 1, 2, 3, 4..
Искал данный комментарий
Автор скорее всего имел в виду счет с 1
Если же считать с нуля, считая \0, то тоже получится 5
Всё же правильно, символов пять
0, 1, 2, 3, 4 это и есть пять символов, вот и выводит пять.
То есть в нулевой элемент массива записан какой-то символ, это уже считается 1 символ, ну и т.д.
В общем похоже strlen просто выводит на человеческом языке, а не машинном
P.S. Это как и с указанием размера массива...
Указываешь что некий массив будет на 3 элемента, обращаешься к ним уже с нуля "0, 1, 2"
сделал дз, теперь можно и следующий видос смотреть
Рахмет
6:12 *играет заглавная тема Терминатор*
у вас есть дискорт канал для консультаций? Привет из 2020
а не много ты за бесплатно хочешь?
@@morrigan_ghost ну мало ли, сообщество единомышленников для решения определённых вопросов )
14:13 Это же всё время называлось "кракозябрами", что за "непонятные символы" вдруг?
Автор случайно делитнул библиотеку кракозябр, теперь все называется "непонятные символы".
*Ставьте скорость х2 и все норм.*
интересно, что cout по имени массива string вьіводит массив как строку.
Если так обратиться к массиву интов, то вьіведет адрес, а если разьіменовать, то только значение, лежащее под 0м индексом
Получилось неожиданное, я ожидал что выполнение:
char string[] = { 'H', 'e' };
cout
Компилятор видит разницу между массивом чисел и символов. Для адреса нужен амперсанд.
@@Сергей-т9д7в спасибо
Где ввод с клавиатуры?
Расскажи с чего начал путь программиста
Было уже, ищи на канале.
Я при по-символьном заполнении массива вручную указал размерность массива и у меня в консоль не вывело никакого лишнего мусора.
99 % видео это лекция !!!!!!!!!
Здравствуйте дорогой учитель
Ваше видеоуроки мне очень нравится, вы все детально объясняете!!!
Можете подсказать
Я программирую на среде DevC++ и у меня выводит ошибка с strlen
Почему ? Я все хорошо проверил но ошибка
Может это из-за среды devc++ ?
Полный текст ошибки в студию
Функция strlen принадлежит не C++, а C. Возможно в этом проблема.
подключите cstring в начале
#нахождение подстроки в строке плис)
А как мне можно заменить из двух строк одинаковые слова на звёздочку?
не знаю говорил ли кто то об этом. автор упустил одну важную вещь, если strlen не учитывает ноль терминатор, это не значит что его нет в массиве, таким образом при работе с таким массивом и использованием sizeof может быть ошибка так как \0 занимает столько же места в массиве сколько и любой другой символ(1 байт).
Хотел установить Visual Studio, но нетбук слабенький и не тянет(
Можно старый VS поставить и радоваться жизни
Спасибо.
А если строкой является данные записанные в переменную из, например COM-порта? В составе пакета есть несколько полезных цифр на определенном месте и их надо записать в виде числа.
Как это сделать?
Умаляю вас можете помочь мне? у меня один вопрос!
а как можно выводить русские символы?
почитай о setlocale в инете
Подскажите, а как в С++ записать что строка состоит из цифры 3 и следующих за ней 57 цифр 5?
Цикликом
Интересно почему когда при вводе массива char ввести больше одного пробела , то программа перестает нормально работать.
И вообще чтобы ввести нормальную строчку из нескольких слов разделенных пробелами необходимо создать несколько массивов, которые автоматически заканчиваются когда вводишь пробел и начинается ввод нового. Почему в массив не записываются пробелы? Для ввода массива использовал cin.
cin действует, как scanf в языке си, для этой функции символ пробела - это терминатор ввода данных в строку, все, что после пробела и до энтера вводится - в молоко. Так уж создали. Для обхода этого ограничения в си есть 2 функции - gets и fgets (fgets предпочтительнее, так как защищает от выстрела в ногу, не дает вводу выйти за пределы строки), в с++ - это getline(cin, имя строки). Есть еще cin.getline (имя строки, длина строки). При помощи этих функций можно вводить пробелы в строку и ввод терминируется исключительно энтером. Удачи в изучении сего прекрасного языка программирования :)
Привет из 2024
Здравствуйте помогите пожалуйста . Имеется массив char . В них значения меняются . Например.
code[0] 0x01
code[1] 0xfe
code[2] 0x02
code[3] 0xfd
Надо переписать в переменную long int kod.
Чтобы в переменную kod записалась так . 0x01fe02fd
Как это сделать , помогите пожалуйста . Спасибо . IDE У меня CVAVR .
Не путать количество символов с количеством байтов в слове "Hello": символов 5, байтов 6.
Не в слове, а в выделенной памяти под массив. Каждый символ = 1байт, в том числе и '\0'
Спсб
Что хранится в не инициализированной строке?
мусор
голову сломал думая как 2 символа '\0' влезло в ячейку ЧАР, пока не понял что это просто эскейп последовательность
Аналогичная ситуация. Спасибо за подсказку.)
у меня вопрос, каким образом можно создать строку, а уже потом инициализировать ее, как мы это делали с переменными.
например.
int a;
a = 15;
не так char string[ ];
string = "Hello World";
и не так не получается
char string[];
string[] = "Hello World";
Вот так можешь:
char *string = new char[255];
string = "Привет!";
не забудь удалять string
делается это так:
delete [] string;
обязательно посмотри уроки #25 и #26 т.к. ты изначально неправильно объявляешь массив: char string[ ];
если ты хочешь сперва объявить массив, а инициализировать позже - тебе при объявлении нужно обязательно указать количество элементов. либо использовать динамический массив, а не статический,)
char string[12]; string = "Hello World"
Инициализировать неизвестную строку (массив) сложно - компилятор не знает сколько памяти под нее выделять.
А с переменными все просто - независимо от значения ячейка занимает известное число байт.
🧠
ничего не понимаю: зачем нужен терминирующий ноль если есть размер массива, который равен длине строки
Массив из слов разной длины собирается через эти терминаторы.
Плюс : особенность более низкоуровневых языков - даже очевидное на первый взгляд нужно прописывать руками.
Ну что, задачка на добавление элемента в любой индекс массива решена, а значит треть видеокурса успешно пройдена
up
А почему компилятор пропускает "-" заместо оператора присваивания "=" в 13-й строке кода. Разве это не должно вызвать ошибку?
Вывести последние буквы всех слов введенной строки ( Кто может помочь с этим кодом?)
Дай угадаю, Яндекс практикум?))
@@Sylvadorr Не, одно задание из курсовой)
@@Sylvadorr а у тебя есть ответ?)
Аски коды.
Hello
Самое интересное, что в Linux если детерминирующий ноль не указать, то он все равно не покажет лишних символов. Интересно, с чем это связано? не ужели это настолько хорошее ядро по сравнению с тупым NT?
+
айл би бэк
lfey
Не называйте свою переменную string. А то после не сможете объявлять строки класса string
Можно же вместо \0 писать NULL ???
Нет. \0 - это служебный символ с ASCII кодом 0, это не цифра. А NULL - это синоним цифры 0, которая является литералом с ASCII кодом 48. Не путай.
Я так понял,что в последний версии студии,символ " \0" пишется автоматически,достаточно оставить пустое место в конце массива,а при написании " \0",он, наоборот, исчезает,и появляется мусор.
Сколько воды, уснуть можно быстрее, чем дойти до момента объяснения...
ахахах ноль терминатор
Спасибо!
Спасибо
Спасибо!
Спасибо
Спасибо !
спасибо