![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.03.2011
Сообщений: 5
|
![]()
После того, как в функции через scanf() или gets ввожу строку, то, возвращаясь в майн, первый по счету printf или cout вместо того, что надо, выводят то, что я вводил в scanf()? Аналогично, сразу после нескольких printf в майн, в функции потом первый scanf() или gets() пропускаеться. Дальше (после первого) все работает нормально.
Много гуглил, всего поначитал, что там буффер переполняется и что строка выходит за ограничение.. Но точной причины и решения не нашел ![]() Вот код: Код:
Последний раз редактировалось aktec; 06.03.2011 в 00:40. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
не используйте вообще scanf() , используйте gets(),
если введете в scanf "привет как дела" - получите только "привет", остальное провалится хз куда. также полезная функция fflush(stdin); |
![]() |
![]() |
![]() |
#3 |
Регистрация: 06.03.2011
Сообщений: 5
|
![]()
Я так понимаю, что fflush(stdin); очищает этот самый "буфер"?
Именно с таким пониманием работы данной функции вставил её перед проблемными местами, а scanf заменил на gets. Но проблема не исчезла ![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
1. Кто под v выделяет память?
2. У scanf для параметра %s советуют указывать размер. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 06.03.2011
Сообщений: 5
|
![]()
*v, как можно заметить, объявляется вне функий, а сразу после #include. Но впервые эта переменная определяеться в майн как указатель на 7-ой символ строки s
Последний раз редактировалось aktec; 06.03.2011 в 10:22. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 06.03.2011
Сообщений: 5
|
![]()
Ап... Помогите пожалуйста все-таки. Я два вечера себе ломаю уже.. и так и сяк...
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 06.03.2011
Сообщений: 5
|
![]()
Внимательный читатель заметит, что s при объявлении объявляеться (простите за тавтологию) как динамический массив размерностью 38
Последний раз редактировалось aktec; 07.03.2011 в 17:12. |
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 07.03.2011
Сообщений: 1
|
![]()
Попробуй функцию очистки буфера клавиатуры поставить после scanf. И stdio.h обязательно подключен должен быть.
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]() Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
лабораторная работа printf/scanf | elenai | Общие вопросы C/C++ | 2 | 27.12.2010 10:47 |
лабораторная работа С++(printf/scanf) | elenai | Помощь студентам | 0 | 26.12.2010 21:50 |
в массиве последнее значение само меняется при использовании оператор printf | Petruha-nsk | Общие вопросы C/C++ | 2 | 19.09.2010 12:45 |
обработка ошибки, scanf(), Си. | krwlr | Помощь студентам | 3 | 05.04.2010 16:58 |
Проблемы системы ввода/вывода C (stdio.h, printf(), scanf()...) | vladislavchick | Помощь студентам | 2 | 21.02.2010 13:30 |