Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 13:56   #1
paulusfr
Пользователь
 
Регистрация: 12.10.2014
Сообщений: 10
По умолчанию Считывание в цикле в одни и те же переменные (Си)

Может ли это вызвать какие-то проблемы?

Есть некая задача, и код работает не на всех данных.

условно:
Код:
for (; count<P; ++count) {
        scanf("%u\n",&L);
        char s[L];
        gets(s);
        // ... траляля ...
 }
Где траляля выполняет некоторые операции, но почему-то не всегда правильно. Может ли быть дело в записи в одни и те же переменные? Может надо как-то освобождать память перед очередной итерацией? Или дело не в этом?
paulusfr вне форума Ответить с цитированием
Старый 12.10.2014, 14:03   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Приведите минимальный код, который демонстрирует проблему. Который можно к себе скопировать, запустить и увидеть проблему

Последний раз редактировалось 8Observer8; 12.10.2014 в 14:11.
8Observer8 вне форума Ответить с цитированием
Старый 12.10.2014, 14:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может ли быть дело в записи в одни и те же переменные?
Да. Может. Во-первых хотя бы char s[L]={0} пиши. Или через memset() зануляй весь массив символов. Во-вторых gets() это одна из функций, которую не стоит использовать из-за ее уязвимости. Кажись gets_s() решает проблему переполнения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 14:28   #4
paulusfr
Пользователь
 
Регистрация: 12.10.2014
Сообщений: 10
По умолчанию

вопрос решен

Последний раз редактировалось paulusfr; 12.10.2014 в 22:04.
paulusfr вне форума Ответить с цитированием
Старый 12.10.2014, 15:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нескромный вопрос можно? Ты отладчиком проходил код?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 15:36   #6
paulusfr
Пользователь
 
Регистрация: 12.10.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нескромный вопрос можно? Ты отладчиком проходил код?
Ручную отладку делал, вроде всё нормально

Цитата:
gets_s()
такого в си нет

зачем мемсет делать тоже непонятно, это никак не влияет на следующий ввод

проблема решена, дело было в том, что нельзя несколько раз объявлять одну и ту же переменную

Последний раз редактировалось paulusfr; 12.10.2014 в 22:05.
paulusfr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Монитор показывает одни пиксели Анна-22 Компьютерное железо 18 13.10.2013 23:16
одни ишибки delfin07 C++ Builder 6 06.05.2012 21:07
Переменные экземпляра,класса, константы и переменные cop08 Общие вопросы .NET 3 20.12.2010 21:56
Вокруг одни больные люди? pu4koff Свободное общение 26 28.06.2010 09:37
Почему одни единицы ? vasyapupkin Общие вопросы C/C++ 1 12.04.2010 17:43