Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
1

Переполнение стека

14.02.2018, 13:14. Просмотров 350. Ответов 6
Метки нет (Все метки)

Доброго времени суток, форумчане!

Начинаю плюсы осваивать, подскажите, безопасен ли код:
C++
1
2
3
4
5
6
7
#include <stdio.h>
int main(int argc, char * argv[]) {
    char array[16];
    fgets(array, 16, stdin);
    printf(array);
    return 0;
}
Как я понимаю, то fgets() не сможет записать больше, чем 16 символов, а значит переполнение невозможно.
Можно ли тут что-то кроме переполнения придумать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2018, 13:14
Ответы с готовыми решениями:

Переполнение стека
Добрый вечер! Я пытался решить следующую задачку: Петя и Вася часто играют в различные...

Переполнение стека
Всем добрый вечер. Я создаю вектор, который имеет большой размер: порядка 256000000. Этот вектор...

Переполнение стека
Есть функция f(): void f() { //... std::make_pair&lt;size_t, size_t&gt; pairReturner(); //... } ...

Переполнение стека
Хочу полюбопытствовать. Вычитал недавно, что на стек выделяется ограниченная область памяти, и в...

6
║XLR8║
1098 / 840 / 256
Регистрация: 25.07.2009
Сообщений: 4,158
Записей в блоге: 5
14.02.2018, 13:23 2
DREAMCORP, строки в Си имеют символ окончания строки '\0' в конце. Нужно 17 char выделить.

Цитата Сообщение от DREAMCORP Посмотреть сообщение
переполнение невозможно
Переполнение стека тут в приципе невозможно. Обращение к памяти за областью массива - UB (undefined behavior) Если вылезешь за облать программы - Segmentation fault. Но уж точно не Stack oveflow!
0
3 / 3 / 0
Регистрация: 10.02.2018
Сообщений: 11
14.02.2018, 13:34 3
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Начинаю плюсы осваивать, подскажите, безопасен ли код
Нет.
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Можно ли тут что-то кроме переполнения придумать?
Да. Введи "%s%s%s%s%s%s%s".

Добавлено через 3 минуты
Цитата Сообщение от outoftime Посмотреть сообщение
строки в Си имеют символ окончания строки '\0' в конце. Нужно 17 char выделить.
Не нужно.
2
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
14.02.2018, 14:41  [ТС] 4
Цитата Сообщение от outoftime Посмотреть сообщение
Переполнение стека тут в приципе невозможно.
Спасибо! Переполнение буфера имел ввиду. Ошибочка вышла.

Цитата Сообщение от John C Reynolds Посмотреть сообщение
Да. Введи "%s%s%s%s%s%s%s".
Получаю Segmentation fault. Весьма интересно. Почему так?
0
2677 / 1849 / 552
Регистрация: 05.06.2014
Сообщений: 5,341
14.02.2018, 17:07 5
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Получаю Segmentation fault. Весьма интересно. Почему так?
Первый аргумент printf считается шаблоном показывающим как читать и печатать остальные аргументы. Серия "%s" говорит "там дальше будет пачка строк, ты их распечатай". Но так как пачки строк нет, функция падает пытаясь их найти.
1
2690 / 1637 / 345
Регистрация: 09.09.2017
Сообщений: 6,694
15.02.2018, 10:24 6
поэтому для вывода строки надо использовать puts(str) или printf("%s", str)
1
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
15.02.2018, 14:44  [ТС] 7
Renji, COKPOWEHEU, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2018, 14:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Переполнение стека
Привет народ. Такой вопрос: Если в общем виде: if (условие) double d else double d почему...

Переполнение стека
Всем привет. Помогите, пожалуйста с решением одной проблемы. Мне нужно в программе обрабатывать...

Реализовать переполнение стека
Помогите пожалуйста: Задали написать программу, где будет переполнение стека ( если съедает...

Рекурсия - переполнение стека
Помогите написать,задание ниже#include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.