|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.03.2011, 00:34 | #1 |
Регистрация: 06.03.2011
Сообщений: 5
|
printf печатает последнее введеное в scanf
После того, как в функции через scanf() или gets ввожу строку, то, возвращаясь в майн, первый по счету printf или cout вместо того, что надо, выводят то, что я вводил в scanf()? Аналогично, сразу после нескольких printf в майн, в функции потом первый scanf() или gets() пропускаеться. Дальше (после первого) все работает нормально.
Много гуглил, всего поначитал, что там буффер переполняется и что строка выходит за ограничение.. Но точной причины и решения не нашел Вот код: Код:
Последний раз редактировалось aktec; 06.03.2011 в 00:40. |
06.03.2011, 00:56 | #2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
не используйте вообще scanf() , используйте gets(),
если введете в scanf "привет как дела" - получите только "привет", остальное провалится хз куда. также полезная функция fflush(stdin); |
06.03.2011, 01:05 | #3 |
Регистрация: 06.03.2011
Сообщений: 5
|
Я так понимаю, что fflush(stdin); очищает этот самый "буфер"?
Именно с таким пониманием работы данной функции вставил её перед проблемными местами, а scanf заменил на gets. Но проблема не исчезла |
06.03.2011, 06:32 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
1. Кто под v выделяет память?
2. У scanf для параметра %s советуют указывать размер. |
06.03.2011, 10:12 | #5 |
Регистрация: 06.03.2011
Сообщений: 5
|
*v, как можно заметить, объявляется вне функий, а сразу после #include. Но впервые эта переменная определяеться в майн как указатель на 7-ой символ строки s
Последний раз редактировалось aktec; 06.03.2011 в 10:22. |
07.03.2011, 07:59 | #6 |
Регистрация: 06.03.2011
Сообщений: 5
|
Ап... Помогите пожалуйста все-таки. Я два вечера себе ломаю уже.. и так и сяк...
|
07.03.2011, 10:37 | #7 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
|
|
07.03.2011, 15:13 | #8 |
Регистрация: 06.03.2011
Сообщений: 5
|
Внимательный читатель заметит, что s при объявлении объявляеться (простите за тавтологию) как динамический массив размерностью 38
Последний раз редактировалось aktec; 07.03.2011 в 17:12. |
07.03.2011, 17:14 | #9 |
Новичок
Джуниор
Регистрация: 07.03.2011
Сообщений: 1
|
Попробуй функцию очистки буфера клавиатуры поставить после scanf. И stdio.h обязательно подключен должен быть.
|
07.03.2011, 20:41 | #10 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
лабораторная работа 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 |