900 / 477 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
|
||||||
1 | ||||||
Переполнение буфера при вводе19.09.2017, 15:06. Показов 4134. Ответов 6
Метки нет (Все метки)
Есть код
Помогите пожалуйста разобраться. 1. Каким образом ввод строки заносится в массив char? У cin есть перегрузка для указателя на char, и в этой перегрузке побайтово данные записываются из буфера консоли в массив? Причём cout выводит все нормально, без мусора, как будто в конец массива был добавлен \0. 2. Предполагаю, что есть вероятность выйти за пределы массива если введённая строка окажется длинее чем буфер, то будет UB. Единственный адекватный вариант для чтения строки в массив это посимвольное чтение со вставкой в конец \0 собственноручно когда введённое количество символов будет равно длине массива. Про string и его друзей знаю. Хочется именно разобраться с вводом cin в массив... Добавлено через 15 минут По моим тестам я вижу что запись идёт побайтово в буфер и в конец автоматически вставляется \0. Но остаётся возможность переполнения буфера. Кто нибудь знает точный ответ?
0
|
19.09.2017, 15:06 | |
Ответы с готовыми решениями:
6
Переполнение буфера при поиске WNDDIR Переполнение при вводе int Переполнение буфера Переполнение буфера |
Модератор
13678 / 10888 / 6465
Регистрация: 18.12.2011
Сообщений: 29,050
|
|
19.09.2017, 15:31 | 2 |
0
|
900 / 477 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
|
|
19.09.2017, 15:48 [ТС] | 3 |
zss,
Про стринг знаю, речь именно о том как работает cin с массивом типа char Добавлено через 11 минут Нашёл в с++11. C++11 27.7.2.2.3/9: В общем \0 добавляется как последний элемент. Выход за пределы массива конечно же надо контролировать самостоятельно
0
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
||||||
19.09.2017, 19:36 | 5 | |||||
Для строк есть getline():
1
|
4001 / 2548 / 428
Регистрация: 09.09.2017
Сообщений: 11,292
|
||||||
19.09.2017, 22:38 | 7 | |||||
0
|
19.09.2017, 22:38 | |
19.09.2017, 22:38 | |
Помогаю со студенческими работами здесь
7
переполнение буфера Переполнение буфера Переполнение буфера Переполнение буфера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |