после того как к прошлому уроку я писал функцию вставляющую в массив значение введенное с консоли по индексу в любое место массива, этот урок прям легко пошел почему-то)))
Спасибо большое за уроки! Все объясняется очень доступно даже для самого начинающего. Из всего многообразия информации - у Вас получается доносить её максимально последовательно и полно.
Сергей, у Вас самые качественные ролики по программированию, спасибо большое, если бы не Вы, то я, скорее всего просто забросил программирование из-за многих недопониманий)
Для тех кто обучается используя Dev-C++: что бы вызвать функцию strlen() нужно подключить заголовочный файл строчкой #include в самом начале программы.
Хорошие уроки, как раз то что нужно начинающему программисту. Если бы еще по каждому уроку были домашние задания с ответами (не видео, а текст): посмотрел урок, сделал домашку по уроку на закрепление материала.... А так долго приходится искать примеры программ на закрепление пройденного материала. БОЛЬШОЕ СПАСИБО ЗА ВАШИ ВИДЕО УРОКИ!!!!
@@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; }
17:00 "...иногда полезно делать такие вещи и смотреть что получится..." Я, который еще на середине видео запустил в цикле for на 999 итераций вывод половины оперативки:🙉 Жаль, вывело немного, но один раз мне даже выскочило исключение и сказало что я залез в недоступную часть памяти
К стати, а ведь strlen(условная переменная char) можно использовать вместо функции rand() по сути. Рандомно будет выводится число, покуда функция не упрется в терминатор. Еще раз спасибо за уроки, Сергей.
не знаю говорил ли кто то об этом. автор упустил одну важную вещь, если strlen не учитывает ноль терминатор, это не значит что его нет в массиве, таким образом при работе с таким массивом и использованием sizeof может быть ошибка так как \0 занимает столько же места в массиве сколько и любой другой символ(1 байт).
интересно, что cout по имени массива string вьіводит массив как строку. Если так обратиться к массиву интов, то вьіведет адрес, а если разьіменовать, то только значение, лежащее под 0м индексом
Всё же правильно, символов пять 0, 1, 2, 3, 4 это и есть пять символов, вот и выводит пять. То есть в нулевой элемент массива записан какой-то символ, это уже считается 1 символ, ну и т.д. В общем похоже strlen просто выводит на человеческом языке, а не машинном P.S. Это как и с указанием размера массива... Указываешь что некий массив будет на 3 элемента, обращаешься к ним уже с нуля "0, 1, 2"
Здравствуйте дорогой учитель Ваше видеоуроки мне очень нравится, вы все детально объясняете!!! Можете подсказать Я программирую на среде DevC++ и у меня выводит ошибка с strlen Почему ? Я все хорошо проверил но ошибка Может это из-за среды devc++ ?
Спасибо. А если строкой является данные записанные в переменную из, например 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 в самом начале программы.
что бы, исправь пж молодой, так же красивее
спасибо
Спасибо
Хорошие уроки, как раз то что нужно начинающему программисту. Если бы еще по каждому уроку были домашние задания с ответами (не видео, а текст): посмотрел урок, сделал домашку по уроку на закрепление материала.... А так долго приходится искать примеры программ на закрепление пройденного материала. БОЛЬШОЕ СПАСИБО ЗА ВАШИ ВИДЕО УРОКИ!!!!
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
привет из 2023! Спасибо большое за уроки!
2024
2025
2026
Сергей, спасибо большое за работу! Береги себя!
Умаляю вас можете помочь мне? у меня один вопрос!
Сергей, искренне благодарен Вам за ваше старание
@@Empty_line что именно?
Предыдущий урок я буду носить с собой на флешке :D
+
Мой лайк 5000-й! Спасибо за урок!
Сергей, спасибо огромное!
Рисуешь как Бог!)
У 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 терминирующий ноль не особо нужен
Проорал с нуля на 6:48
+
....Это не тоже самое что и ноль, вот такой....
xDDDD
Спасибо, Автор, ты лучший!
#cтроки #SimpleCode #урокипрограммирования
Так. По названию можно понять, что строка, это массив символов. Вот мой код, до начала просмотра видео:
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;
}
Спасибо за ваши уроки)
Спасибо за ваши уроки,Сергей
17:00 "...иногда полезно делать такие вещи и смотреть что получится..."
Я, который еще на середине видео запустил в цикле for на 999 итераций вывод половины оперативки:🙉
Жаль, вывело немного, но один раз мне даже выскочило исключение и сказало что я залез в недоступную часть памяти
Ловушки Джокера делаешь
Спасибо !
Пожалуйста!
К стати, а ведь strlen(условная переменная char) можно использовать вместо функции rand() по сути. Рандомно будет выводится число, покуда функция не упрется в терминатор.
Еще раз спасибо за уроки, Сергей.
Смысл залезать в чужую область памяти?
Огромное спасибо за ваш труд! Уроки очень понятные и информативные)
Ролик класс, спасибо!
Благодарю!
Сергей, не забывай, плиз, буковки побольше делать, совсем ни хр.. не видно, прям на самой велосипедной теме!.. ;/
О, да, чуть глаза не сломал!
Канкотенация строк, о ужас, заготовил на всякий случай кило антидипресантов... А в общем, как обычно, спасибо большое Сергей!
Спасибо, Сергей. Очень интересно!
Спасибо
Просто Спасибо )
Просто лучший!
Проще посмотреть твои видео, чем сидеть на парах
спасибо!
"Примерно точно так-же само" - как по мне лучше и не скажешь)
Умаляю вас можете помочь мне? у меня один вопрос!
Очень интересно узнать о интерфейсе инструкций с++. Потому что я начал впринципе с него. Не считая бейсика, делфи html и java в техникуме.
Оставлю это здесь
В информатике принято нуль перечеркивать обратным слэшем
ага. для того чтобы отличать от буквы "О". Правда только прямым слешем, не обратным
Хороший урок, жаль только шрифт мелковат)
15:04 - А что случилось с первыми тремя символами? Понятно, что каким-то образом изменилось значение в соответствующих байтах памяти, но каким именно?
есть такие символы, которые трансформируют другие символы, скорее всего такие символы и попались.
Получилось неожиданное, я ожидал что выполнение:
char string[] = { 'H', 'e' };
cout
Компилятор видит разницу между массивом чисел и символов. Для адреса нужен амперсанд.
@@Сергей-т9д7в спасибо
16:55 Строка это когда есть в конце /0, если его убрать то это просто массив.
не знаю говорил ли кто то об этом. автор упустил одну важную вещь, если strlen не учитывает ноль терминатор, это не значит что его нет в массиве, таким образом при работе с таким массивом и использованием sizeof может быть ошибка так как \0 занимает столько же места в массиве сколько и любой другой символ(1 байт).
Рахмет
на strlen ругает. если добавить #include , то все гуд (но у вас cstring нет, и все чудненько). может компилятор VS хитер?)
спасибо помогло )
ох, спасибо, два часа мучался, думая как это сделать.
Почему никто не объяснит как работать с библиотекой стринг...
14:13 Это же всё время называлось "кракозябрами", что за "непонятные символы" вдруг?
Автор случайно делитнул библиотеку кракозябр, теперь все называется "непонятные символы".
интересно, что cout по имени массива string вьіводит массив как строку.
Если так обратиться к массиву интов, то вьіведет адрес, а если разьіменовать, то только значение, лежащее под 0м индексом
Лайк за "карячки"
И краказябры
Здравствуйте. А почему функция при подсчет символов, выводит число пять? Символов пять, но массив же считается с нуля. Значит 0, 1, 2, 3, 4..
Искал данный комментарий
Автор скорее всего имел в виду счет с 1
Если же считать с нуля, считая \0, то тоже получится 5
Всё же правильно, символов пять
0, 1, 2, 3, 4 это и есть пять символов, вот и выводит пять.
То есть в нулевой элемент массива записан какой-то символ, это уже считается 1 символ, ну и т.д.
В общем похоже strlen просто выводит на человеческом языке, а не машинном
P.S. Это как и с указанием размера массива...
Указываешь что некий массив будет на 3 элемента, обращаешься к ним уже с нуля "0, 1, 2"
Я при по-символьном заполнении массива вручную указал размерность массива и у меня в консоль не вывело никакого лишнего мусора.
сделал дз, теперь можно и следующий видос смотреть
*Ставьте скорость х2 и все норм.*
у вас есть дискорт канал для консультаций? Привет из 2020
а не много ты за бесплатно хочешь?
@@morrigan_ghost ну мало ли, сообщество единомышленников для решения определённых вопросов )
2:54 начало
"АСКИ" - это таблица ASCII?
Геениий!
99 % видео это лекция !!!!!!!!!
Спсб
Здравствуйте дорогой учитель
Ваше видеоуроки мне очень нравится, вы все детально объясняете!!!
Можете подсказать
Я программирую на среде DevC++ и у меня выводит ошибка с strlen
Почему ? Я все хорошо проверил но ошибка
Может это из-за среды devc++ ?
Полный текст ошибки в студию
Функция strlen принадлежит не C++, а C. Возможно в этом проблема.
подключите cstring в начале
Не путать количество символов с количеством байтов в слове "Hello": символов 5, байтов 6.
Не в слове, а в выделенной памяти под массив. Каждый символ = 1байт, в том числе и '\0'
Спасибо.
А если строкой является данные записанные в переменную из, например COM-порта? В составе пакета есть несколько полезных цифр на определенном месте и их надо записать в виде числа.
Как это сделать?
Умаляю вас можете помочь мне? у меня один вопрос!
🧠
Расскажи с чего начал путь программиста
Было уже, ищи на канале.
Привет из 2024
голову сломал думая как 2 символа '\0' влезло в ячейку ЧАР, пока не понял что это просто эскейп последовательность
Аналогичная ситуация. Спасибо за подсказку.)
#нахождение подстроки в строке плис)
А как мне можно заменить из двух строк одинаковые слова на звёздочку?
6:12 *играет заглавная тема Терминатор*
Интересно почему когда при вводе массива 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 .
Хотел установить Visual Studio, но нетбук слабенький и не тянет(
Можно старый VS поставить и радоваться жизни
Подскажите, а как в С++ записать что строка состоит из цифры 3 и следующих за ней 57 цифр 5?
Цикликом
ДАЙТЕ ПОЖАЛУЙСТА iosteam! No such file directory!
Что хранится в не инициализированной строке?
мусор
а как можно выводить русские символы?
почитай о setlocale в инете
у меня вопрос, каким образом можно создать строку, а уже потом инициализировать ее, как мы это делали с переменными.
например.
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
ничего не понимаю: зачем нужен терминирующий ноль если есть размер массива, который равен длине строки
Массив из слов разной длины собирается через эти терминаторы.
Плюс : особенность более низкоуровневых языков - даже очевидное на первый взгляд нужно прописывать руками.
+
айл би бэк
Hello
Вывести последние буквы всех слов введенной строки ( Кто может помочь с этим кодом?)
Дай угадаю, Яндекс практикум?))
@@Sylvadorr Не, одно задание из курсовой)
@@Sylvadorr а у тебя есть ответ?)
А почему компилятор пропускает "-" заместо оператора присваивания "=" в 13-й строке кода. Разве это не должно вызвать ошибку?
Аски коды.
Самое интересное, что в Linux если детерминирующий ноль не указать, то он все равно не покажет лишних символов. Интересно, с чем это связано? не ужели это настолько хорошее ядро по сравнению с тупым NT?
lfey
Не называйте свою переменную string. А то после не сможете объявлять строки класса string
Можно же вместо \0 писать NULL ???
Нет. \0 - это служебный символ с ASCII кодом 0, это не цифра. А NULL - это синоним цифры 0, которая является литералом с ASCII кодом 48. Не путай.
Я так понял,что в последний версии студии,символ " \0" пишется автоматически,достаточно оставить пустое место в конце массива,а при написании " \0",он, наоборот, исчезает,и появляется мусор.
ахахах ноль терминатор
Сколько воды, уснуть можно быстрее, чем дойти до момента объяснения...
Спасибо!
Спасибо
Спасибо!
Спасибо
Спасибо !
спасибо